QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#412702#6746. Merge the RectanglespWA 82ms195296kbC++142.8kb2024-05-16 18:14:182024-05-16 18:14:19

Judging History

你现在查看的是最新测评结果

  • [2024-05-16 18:14:19]
  • 评测
  • 测评结果:WA
  • 用时:82ms
  • 内存:195296kb
  • [2024-05-16 18:14:18]
  • 提交

answer

#include <iostream>
#include <cstring>
#include <vector>
#include <queue>
#include <map>
using namespace std;

const int N = 2e3;
char ma[N][N];

struct node
{
    int fg;
    int pos;
    int l, r;

    bool operator<(const node &o) const
    {
        if (pos == o.pos)
            return l < o.l;
        else
            return pos < o.pos;
    }
};

map<node, int> num;
vector<node> arr[2][N][N];

signed main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    int n, m;
    cin >> n >> m;

    for (int i = 1; i < n; i++)
        for (int j = 1; j <= m; j++)
            cin >> ma[i][j];

    for (int i = 1; i < n; i++)
    {
        int l = -1;
        for (int j = 1; j <= m + 1; j++)
        {
            if (j == m + 1 || ma[i][j] == '0')
            {
                if (l != -1)
                {
                    node t = {1, i, l, j - 1};
                    num[t] = 2;
                    arr[1][i][j - 1].push_back(t);
                    arr[1][i][l].push_back(t);
                }
                l = -1;
            }
            else if (l == -1)
                l = j - 1;
        }
    }

    for (int i = 1; i <= n; i++)
        for (int j = 1; j < m; j++)
            cin >> ma[i][j];

    for (int j = 1; j < m; j++)
    {
        int l = -1;
        for (int i = 1; i <= n + 1; i++)
        {
            if (i == n + 1 || ma[i][j] == '0')
            {
                if (l != -1)
                {
                    node t = {0, j, l, i - 1};
                    num[t] = 2;
                    arr[0][l][j].push_back(t);
                    arr[0][i - 1][j].push_back(t);
                }
                l = -1;
            }
            else if (l == -1)
                l = i - 1;
        }
    }

    queue<node> que;
    node t = {1, 0, 0, m};
    que.push(t);
    t = {1, n, 0, m};
    que.push(t);

    t = {0, 0, 0, n};
    que.push(t);
    t = {0, m, 0, n};
    que.push(t);

    while (que.size())
    {
        node t = que.front();
        que.pop();

        int pos = t.pos;

        for (int i = t.l; i <= t.r; i++)
        {
            int x, y;
            if (t.fg == 0)
                x = i, y = pos;
            else
                x = pos, y = i;

            for (auto c : arr[t.fg ^ 1][x][y])
            {
                num[c]--;
                if (num[c] == 0)
                    que.push(c);
            }
        }
    }

    bool fg = true;
    for (auto c : num)
    {
        // cout << c.first.fg << " " << c.first.pos << " " << c.first.l << "|" << c.first.r << "   ";

        if (c.second > 0)
        {
            fg = false;
            // cout << "!";
        }
        // cout << "\n";
    }

    if (fg)
        cout << "YES\n";
    else
        cout << "NO\n";
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 24ms
memory: 191840kb

input:

3 4
0000
0111
101
101
110

output:

YES

result:

ok answer is YES

Test #2:

score: 0
Accepted
time: 32ms
memory: 192572kb

input:

3 3
110
011
01
11
10

output:

NO

result:

ok answer is NO

Test #3:

score: 0
Accepted
time: 60ms
memory: 193928kb

input:

1500 1500
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000...

output:

YES

result:

ok answer is YES

Test #4:

score: 0
Accepted
time: 69ms
memory: 194180kb

input:

1500 1500
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111...

output:

YES

result:

ok answer is YES

Test #5:

score: 0
Accepted
time: 59ms
memory: 194796kb

input:

1500 1500
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111...

output:

YES

result:

ok answer is YES

Test #6:

score: 0
Accepted
time: 68ms
memory: 194796kb

input:

1500 1500
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000...

output:

YES

result:

ok answer is YES

Test #7:

score: 0
Accepted
time: 65ms
memory: 194224kb

input:

1500 1500
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111...

output:

NO

result:

ok answer is NO

Test #8:

score: 0
Accepted
time: 60ms
memory: 194912kb

input:

1500 1500
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111...

output:

NO

result:

ok answer is NO

Test #9:

score: 0
Accepted
time: 51ms
memory: 195296kb

input:

1500 1500
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111...

output:

NO

result:

ok answer is NO

Test #10:

score: -100
Wrong Answer
time: 82ms
memory: 195280kb

input:

1500 1500
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111...

output:

NO

result:

wrong answer expected YES, found NO