QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#402113#5414. Stop, Yesterday Please No MoreasaltfishWA 8ms8200kbC++2314.4kb2024-04-29 21:45:302024-04-29 21:45:32

Judging History

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

  • [2024-04-29 21:45:32]
  • 评测
  • 测评结果:WA
  • 用时:8ms
  • 内存:8200kb
  • [2024-04-29 21:45:30]
  • 提交

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'