QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#402113 | #5414. Stop, Yesterday Please No More | asaltfish | WA | 8ms | 8200kb | C++23 | 14.4kb | 2024-04-29 21:45:30 | 2024-04-29 21:45:32 |
Judging History
answer
////#define _CRT_SECURE_NO_WARNINGS 0
////#include<cstdio>
////#include<iostream>
////#include<cmath>
////#include<algorithm>
////#include<string.h>
////#include<iomanip>
////#include<stack>
////#include<deque>
////#include<queue>
////#include<vector>
////#include<map>
////using namespace std;
////typedef long long ll;
////ll gcd(ll x, ll y)
////{
//// if (x % y != 0)
//// {
//// return gcd(y, x % y);
//// }
//// else return y;
////}
////inline int read() {register int s = 0, w = 1;char ch = getchar();while (ch < '0' || ch > '9') {if (ch == '-')w = -1;ch = getchar();}while (ch >= '0' && ch <= '9')s = s * 10 + ch - '0', ch = getchar();return s * w;}
////int main()
////{
//// ios::sync_with_stdio(false);
//// cin.tie(0); cout.tie(0);
//// ll t, n, p, a, b;
//// cin >> t;
//// while (t--)
//// {
//// ll a = 1, g = 0, b = 0;
//// vector<ll>h,l;
//// cin >> n;
//// ll flag = 0;
//// priority_queue<ll>d;
//// ll g = 0;
//// d.push(1); ll p;
//// while (n--)
//// {
//// cin >> p;
//// if (p == 1)
//// {
//// a++; b++;
//// }
//// else if(p == -1)
//// {
//// if (b > 1)
//// {
//// b--;
//// }
//// else
//// {
//// if (g)
//// {
//// g--;
//// }
//// else
//// {
//// flag++; break;
//// }
//// }
//// }
//// else
//// {
//// g++;
//// if (b > 1)b--;
//// else
//// {
//// if (g)
//// {
//// g--;
//// }
//// else
//// {
//// a++;
//// b++; g--;
//// }
//// }
//// }
//// /*if (p == 1)
//// {
//// d.push(1);
//// }
//// else
//// {
//// ll k = d.top();
//// d.pop();
//// if (d.size() > 0)
//// {
//// ll o = d.top();
//// d.pop();
//// k += o;
//// d.push(k);
//// }
//// else
//// {
//// if (p == 0)d.push(1);
//// else
//// {
//// flag++; break;
//// }
//// }
//// }*/
//// }
//// if (flag)cout << -1 << '\n';
//// else
//// {
//// ll sum = 0;
//// //cout << d.size()<<" "; ll sum = 0;
//// ll op = d.size();
//// while (!d.empty())
//// {
//// sum += d.top();
//// d.pop();
//// }
//// ll kl = gcd(op, sum);
//// cout <<sum/kl<<" " << op/kl << '\n';
//// }
//// }
//// return 0;
////}
#define _CRT_SECURE_NO_WARNINGS 0
//#include<cstdio>
//#include<iostream>
//#include<cmath>
//#include<algorithm>
//#include<string.h>
//#include<iomanip>
//#include<stack>
//#include<deque>
//#include<queue>
//#include<vector>
//#include<map>
//using namespace std;
//typedef long long ll;
//struct jh
//{
// ll x, y;
//}s[100005];
//inline int read() { register int s = 0, w = 1; char ch = getchar(); while (ch < '0' || ch > '9') { if (ch == '-')w = -1; ch = getchar(); }while (ch >= '0' && ch <= '9')s = s * 10 + ch - '0', ch = getchar(); return s * w; }
//int main()
//{
// ll n; cin >> n;
// for (int i = 1; i <= n; i++)
// {
// cin >> s[i].x >> s[i].y;
// }
// ll sum = 0;
// ll g = 0, p = -1; ll pp = -1;
// for (int i = 1; i <= n; i++)
// {
// ll hg = (i + 1) % n; if (hg == 0)hg = n;
// if (s[i].y > s[hg].y&&s[i].x<=s[hg].x)
// {
// pp = i;
// break;
// }
// }
// for (int i = pp; i <= pp+n-1; i++)
// {
// ll a = i % n; if (a == 0)a = n;
// ll b = (i + 1) % n; if (b == 0)b = n;
// if (s[a].y > s[b].y&&s[a].x<=s[b].x)
// {
// g = 0;
// p = s[a].x;
// }
// if (s[a].y < s[b].y)
// {
// if (g == 0)
// {
// sum++;
// g = -1;
// }
// }
// }
// //a=n
// //if (s[a].y > s[b].y)g = 0;
// //if (s[a].y < s[b].y)
// //{
// // if (g == 0)
// // {
// // sum++;
// // g = -1;
// // }
// //}
// //for (int i = 3; i <= n; i++)
// //{
// // if (s[i].y - s[i - 1].y > 0 && s[i - 1].y < s[i - 2].y&&s[i].x>s[i-2].x)sum++;
// //}
// //if (n >= 3)
// //{
// // if (s[1].y > s[n].y && s[n - 1].y > s[n].y&&s[1].x>s[n-1].x)sum++;
// // if (s[n].y > s[1].y && s[2].y > s[1].y&&s[2].x>s[n].x); sum++;
// //}
// //if (sum == 0)sum++;
// cout << sum;
// return 0;
//}
//#include <iostream>
//#include <vector>
//using namespace std;
//typedef long long ll;
//struct po {
// int x, y;
//};
//struct ve {
// int x, y;
//};
//po p[2000 + 100];
//ve v[2000 + 100];
//int main()
//{
// int n;
// cin >> n;
// int cnt = 0;
// for (int i = 1; i <= n; i++) {
// cin >> p[i].x >> p[i].y;
// }
// vector<pair<ve, po>>vec;
// for (int i = 1; i <= n - 1; i++) {
// v[i].x = p[i + 1].x - p[i].x;
// v[i].y = p[i + 1].y - p[i].y;
// }
// v[n].x = p[1].x - p[n].x;
// v[n].y = p[1].y - p[n].y;
// ve temp = { 0,0 };
// for (int i = 1; i <= n; i++) {
// temp.x = v[i].x;
// temp.y = v[i].y;
// if (temp.y != 0) {
// vec.push_back({ temp,{p[i].x,p[i].y} });
//
// }
// temp = { 0,0 };
// }
// for (int i = 0; i < vec.size(); i++) {
// int l = (i - 1 >= 0 ? i - 1 : vec.size() - 1);
// int r = i;
// if (vec[l].first.y < 0 && vec[r].first.y>0 && vec[l].second.x < vec[r].first.x + vec[r].second.x) {
// cnt++;
// }
// }
// cout << cnt;
// return 0;
//}
//#include<cstdio>
//#include<iostream>
//#include<cmath>
//#include<algorithm>
//#include<string.h>
//#include<iomanip>
//#include<stack>
//#include<deque>
//#include<queue>
//#include<vector>
//#include<map>
//using namespace std;
//typedef long long ll;
//ll dp[200005],n,k,minn,a[200005];
//map<ll, ll>h;
//struct jh
//{
// ll x, w;
// bool operator <(const jh& d)const
// {
// if (w != d.w)return w < d.w;
// return x < d.x;
// }
//};
//inline int read() { register int s = 0, w = 1; char ch = getchar(); while (ch < '0' || ch > '9') { if (ch == '-')w = -1; ch = getchar(); }while (ch >= '0' && ch <= '9')s = s * 10 + ch - '0', ch = getchar(); return s * w; }
//void search(priority_queue<jh>d,ll p)
//{
// if (p == n + 1)return;
// while (d.top().x <= p - k)
// {
// d.pop();
// }
// priority_queue<jh>dd(d);
// dd.push({ p,d.top().w + a[p] });
// if (p >= n + 1 - k)minn = min(minn, d.top().w + h[p]);
// search(dd, p + 1);
// if (h.count(p))
// {
// dd.pop();
// dd.push({ p,d.top().w + h[p] });
// if (p >= n + 1 - k)minn = min(minn, d.top().w + h[p]);
// search(dd, p + 1);
// }
//}
//void solve()
//{
// minn = 1e18; h.clear();
// n = read(); k = read(); string s;
// for (int i = 1; i <= n; i++)
// {
// a[i] = read();
// }
// cin >> s;
// k = read(); ll p,b;
//
// while (k--)
// {
// b = read(); p = read();
// if (!h.count(b))
// h[b] = p;
// else h[b] = max(h[b], p);
// }
// printf("%lld\n", minn);
//}
//int main()
//{
// ios::sync_with_stdio(false);
// cin.tie(0); cout.tie(0);
// ll t; t = read();
// while (t--)
// {
// solve();
// }
// return 0;
//}
//#define _CRT_SECURE_NO_WARNINGS 0
//#include<cstdio>
//#include<iostream>
//#include<cmath>
//#include<algorithm>
//#include<string.h>
//#include<iomanip>
//#include<stack>
//#include<deque>
//#include<queue>
//#include<vector>
//#include<map>
//#include<set>
//using namespace std;
//typedef long long ll;
//ll divs[1000][1000],sum[1005][1005];
//inline int read() { register int s = 0, w = 1; char ch = getchar(); while (ch < '0' || ch > '9') { if (ch == '-')w = -1; ch = getchar(); }while (ch >= '0' && ch <= '9')s = s * 10 + ch - '0', ch = getchar(); return s * w; }
//void solve() {
// int n, m, up = 0, down = 0, left = 0, right = 0;
// int k;
// scanf("%d %d %d", &n, &m, &k);
// int height = n, width = m;
// string str;
// cin >> str;
// for (int i = 0; i < str.size(); i++)
// {
// if (str[i] == 'U') {
// if (up == 0) {
// height--;
// }
// else {
// up--;
// }
// down++;
// }
// else if (str[i] == 'D') {
// if (down == 0) {
// height--;
// }
// else {
// down--;
// }
// up++;
// }
// else if (str[i] == 'L') {
// if (left == 0) {
// width--;
// }
// else {
// left--;
// }
// right++;
// }
// else {
// if (right == 0) {
// width--;
// }
// else {
// right--;
// }
// left++;
// }
// }
// //开始差分
// int x = up + 1, y = left + 1;
// height = max(height, 0);
// width = max(width, 0);
// set<pair<int, int>> st;
// for (int i = str.size() - 1; i >= 0; i--)
// {
// if (!st.find({ x , y })) {
// st.insert({ x,y });
// divs[x][y]++;
// divs[x + height][y]--;
// divs[x][y + width]--;
// divs[x + height][y + width]++;
// }
// if (str[i] == 'U') {
// x++;
// }
// else if (str[i] == 'D') {
// x--;
// }
// else if (str[i] == 'L') {
// y++;
// }
// else {
// y--;
// }
// }
// int ans = 0;
// for (int i = 1; i <= n; i++)
// {
// for (int j = 1; j <= m; j++)
// {
// sum[i][j] = (sum[i][j - 1] + sum[i - 1][j] - sum[i - 1][j - 1] + divs[i][j]);
// cout << sum[i][j] << " ";
// if (height * width - k == divs[i][j]) {
// ans++;
// }
// }
// cout << endl;
// }
// cout << ans << endl;
// for (int i = 1; i <= n; i++)
// {
// for (int j = 1; j <= m; j++)
// {
// divs[i][j] = 0;
// }
// }
//}
//int main()
//{
// ios::sync_with_stdio(false);
// cin.tie(0); cout.tie(0);
//
// return 0;
//
//}
// int x = up + 1, y = left + 1;
//height = max(height, 0);
//width = max(width, 0);
//set<pair<int, int>> st;
//for (int i = str.size() - 1; i >= 0; i--)
//{
// if (st.find({ x , y }) == st.end()) {
// st.insert({ x,y });
// divs[x][y]++;
// divs[x + height][y]--;
// divs[x][y + width]--;
// divs[x + height][y + width]++;
// }
// if (str[i] == 'U') {
// x++;
// }
// else if (str[i] == 'D') {
// x--;
// }
// else if (str[i] == 'L') {
// y++;
// }
// else {
// y--;
// }
//}
//int ans = 0;
//for (int i = 1; i <= n; i++)
//{
// for (int j = 1; j <= m; j++)
// {
// sum[i][j] = (sum[i][j - 1] + sum[i - 1][j] - sum[i - 1][j - 1]+divs[i][j]);
// cout << sum[i][j] << " ";
// if (height * width - k == divs[i][j]) {
// ans++;
// }
// }
// cout << endl;
//}
//cout << ans << endl;
//for (int i = 1; i <= n; i++)
//{
// for (int j = 1; j <= m; j++)
// {
// divs[i][j] = 0;
// }
//}}
#define _CRT_SECURE_NO_WARNINGS 0
#include<cstdio>
#include<iostream>
#include<cmath>
#include<algorithm>
#include<string.h>
#include<iomanip>
#include<stack>
#include<deque>
#include<queue>
#include<vector>
#include<map>
#include<set>
using namespace std;
typedef long long ll;
ll di[1100][1100], sum[1100][1100];
inline int read() { register int s = 0, w = 1; char ch = getchar(); while (ch < '0' || ch > '9') { if (ch == '-')w = -1; ch = getchar(); }while (ch >= '0' && ch <= '9')s = s * 10 + ch - '0', ch = getchar(); return s * w; }
int main()
{
ll t; t = read();
while (t--)
{
ll n, m, k; n = read(); m = read(); k = read();
for (int i = 1; i < n; i++)
{
for (int y = 1; y <= m; y++)
{
di[i][y] = 0;
sum[i][y] = 0;
}
}
string s;
cin >> s;
ll a = 1,b=1,x=1,yy=1,le=m,wi=n;
for (int i = 0; i < s.length(); i++)
{
if (s[i] == 'U')
{
a--;
if (a <= 0)
{
wi--;
a = 1;
x++;
}
}
else if (s[i] == 'D')
{
a++;
if (a+wi-1 > n)
{
wi--;
}
}
else if (s[i] == 'L')
{
b--;
if (b<=0)
{
b = 1; le--; yy++;
}
}
else if (s[i] == 'R')
{
b++;
if (b+le-1 > m)
{
le--;
}
}
}
if (le <= 0 || wi <= 0)
{
if (k == 0)cout << n * m<<'\n';
else cout << 0<<'\n';
continue;
}
set<pair<ll, ll> >d;
for (int i = 0; i < s.length(); i++)
{
if (!d.count({ x,yy }))
{
d.insert({ x,yy });
di[x][yy]++;
di[x + wi][yy]--;
di[x][yy + le]--;
di[x + wi][yy + le]++;
}
if (s[i] == 'U')x--;
else if (s[i] == 'D')x++;
else if (s[i] == 'L')yy--;
else yy++;
//for (int u= 1; u <= n; u++)
//{
// for (int y = 1; y <= m; y++)
// {
// cout << di[u][y] << " ";
// }
// cout << endl;
//}
//cout << endl;
}
if (!d.count({ x,yy }))
{
d.insert({ x,yy });
di[x][yy]++;
di[x + wi][yy]--;
di[x][yy + le]--;
di[x + wi][yy + le]++;
}
//for (int i = 1; i <= n; i++)
//{
// for (int y = 1; y <= m; y++)
// {
// cout << di[i][y] << " ";
// }
// cout << endl;
//}
//cout << endl;
ll ans = 0;
for (int i = 1; i <= n; i++)
{
for (int y = 1; y <= m; y++)
{
sum[i][y] = sum[i - 1][y] + sum[i][y - 1] - sum[i - 1][y - 1] + di[i][y];
// cout << sum[i][y] << " ";
if (sum[i][y] == le*wi-k)ans++;
}
//cout << endl;
}
cout << ans << '\n';
}
}
詳細信息
Test #1:
score: 100
Accepted
time: 1ms
memory: 5596kb
input:
3 4 5 3 ULDDRR 4 5 0 UUUUUUU 4 5 10 UUUUUUU
output:
2 20 0
result:
ok 3 number(s): "2 20 0"
Test #2:
score: -100
Wrong Answer
time: 8ms
memory: 8200kb
input:
1060 19 12 0 UDLDDUUUUDDDLLRDUDUURULUUUDRDUDRDRLRLRLULULLLDLDDRLUUUURUUUDDRLLRUUUDULURUULLRDRLRDDURDUUURRRLURLRUULRRUDURDLUUURDLURDDLUUURDDRLLURRDLRUDLRDRLLRRDRDDLDRURRRLUDULLLRUUDLRRURRDLLRRRDLLRDDDLRLRURURDDDL 11 1 0 UR 3 18 33 UDRLR 17 11 132 RLDRDLDRUU 6 10 13 UULUDDLRDLUUDLDD 1 15 0 D 6 20 50 D...
output:
228 11 20 99 18 15 34 240 15 0 0 13 14 18 26 18 1 19 108 8 0 0 3 7 0 29 16 17 1 8 10 9 15 1 320 11 2 3 0 0 12 3 11 0 0 14 0 22 36 51 23 7 6 3 2 48 28 8 63 22 49 2 10 4 108 10 10 44 0 15 9 1 4 30 14 99 105 10 14 17 0 66 10 11 28 52 35 56 29 14 56 90 14 0 121 0 48 30 33 11 0 30 7 8 3 11 16 45 20 34 0 ...
result:
wrong answer 16th numbers differ - expected: '16', found: '18'