QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#499476#6723. Grid with ArrowsInk_baiRE 0ms4456kbC++202.0kb2024-07-31 14:44:522024-07-31 14:44:52

Judging History

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

  • [2024-07-31 14:44:52]
  • 评测
  • 测评结果:RE
  • 用时:0ms
  • 内存:4456kb
  • [2024-07-31 14:44:52]
  • 提交

answer

#include <bits/stdc++.h>

using namespace std;

int updiv(int a, int b)
{
    return a / b + (a % b ? 1 : 0);
}

int main()
{
    int T;
    cin >> T;
    while (T--)
    {
        char s[100005];
        int a[100005] = {0};
        int b[100005] = {0};
        int n, m;
        cin >> n >> m;
        for (int i = 1; i <= n * m; i++)
        {
            char c;
            cin >> c;
            s[i] = c;
        }
        for(int i = 1; i <= n * m; i++)
        {
            int x;
            cin >> x;
            if(s[i] == 'u'&& i - m * x >= 1)
            {
                a[i - m * x]++;
                b[i]++;
            }
            else if(s[i] == 'd'&& i + m * x <= n * m)
            {
                a[i + m * x]++;
                b[i]++;
            }
            else if(s[i] == 'l'&& updiv(i, m) == updiv(i - x, m))
            {
                a[i - x]++;
                b[i]++;
            }
            else if(s[i] == 'r'&& updiv(i, m) == updiv(i + x, m))
            {
                a[i + x]++;
                b[i]++;
            }
        }
        int u = 0, v = 0;
        bool flag = false;
        for(int i = 1; i <= n * m; i++)
        {
            if(flag||u > 1||v > 1)
            {
                flag = true;
                break;
            }
            else if(a[i] == b[i]&& b[i] == 0)
            {
                flag = true;
                break;
            }
            else if(a[i] - b[i] == 1)
            {
                u++;
            }
            else if(b[i] - a[i] == 1)
            {
                v++;
            }
            else if(a[i] == b[i])
            {
                continue;
            }
            else
            {
                flag = true;
            }
        }
        if(u > 1||v > 1)
        {
            flag = true;
        }
        if(flag)
        {
            cout << "No" << endl;
        }
        else
        {
            cout << "Yes" << endl;
        }
    }
}

详细

Test #1:

score: 100
Accepted
time: 0ms
memory: 4456kb

input:

2
2 3
rdd
url
2 1 1
1 1 2
2 2
rr
rr
1 1
1 1

output:

Yes
No

result:

ok 2 token(s): yes count is 1, no count is 1

Test #2:

score: -100
Runtime Error

input:

1109
5 8
rddddldl
drruludl
rrldrurd
urrrlluu
uurrulrl
4 4 1 2 4 3 1 6
1 3 5 1 1 1 3 6
2 4 1 1 2 1 1 1
2 3 4 2 4 3 3 3
4 1 1 2 2 5 1 5
7 9
rdrddrdll
urrdruldl
ruullrulu
drrlrlddl
rrrdddlll
ruulururl
ruurrlluu
7 1 1 1 2 1 2 3 6
1 7 3 1 3 1 2 1 8
2 2 1 2 4 3 1 2 2
2 2 4 1 1 5 3 3 1
3 4 6 1 2 1 2 7 7
6 ...

output:

Yes
Yes
No
No
Yes
No
Yes
Yes
Yes
Yes
No
Yes
No
Yes
Yes
No

result: