QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#499483 | #6723. Grid with Arrows | Ink_bai | RE | 1ms | 5380kb | C++20 | 2.1kb | 2024-07-31 14:52:27 | 2024-07-31 14:52:27 |
Judging History
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[200005];
int a[200005] = {0};
int b[200005] = {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++)
{
// cout << i << ' ' << s[i] << endl;
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: 1ms
memory: 5380kb
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