QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#401376#5414. Stop, Yesterday Please No MoreasaltfishWA 8ms7932kbC++203.2kb2024-04-28 16:26:232024-04-28 16:26:23

Judging History

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

  • [2024-04-28 16:26:23]
  • 评测
  • 测评结果:WA
  • 用时:8ms
  • 内存:7932kb
  • [2024-04-28 16:26:23]
  • 提交

answer

#define _CRT_SECURE_NO_WARNINGS 0
#include <iostream> 
#include<iomanip>
#include<algorithm>
#include<vector>
#include<map>
#include<string>
#include<set>
#include<queue>
#include <stack>
#include<list>
#include<cstring>
#include<cmath>
#include <cstdlib>
#include<fstream>
#include<climits>
using namespace std;
typedef long long ll;
struct po {
    ll x, y;
    po(ll i=0, ll j=0) {
        x = i; y = j;
    }
};
ll mp[1000 + 100][1000 + 100] = { {0} },a[1000 + 100][1000 + 100] = { {0} };
void mark(po top, po bot) {
    mp[top.x][top.y] += 1;
    mp[top.x][bot.y+1] -= 1;
    mp[bot.x+1][top.y] -= 1;
    mp[bot.x+1][bot.y+1] += 1;
}
void solve() {
    map<pair<ll,ll>, int>check;
    int n, m, up = 0, down = 0, left = 0, right = 0;
    int k;
    scanf("%d %d %d", &n, &m, &k);
    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= m; j++) {
            mp[i][j] = 0;
            a[i][j] = 0;
        }
    }
    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++;
        }
    }
    up++;
    left++;
    po top(up, left);
    po bot(up + height - 1, left + width - 1);
    if (height > 0 && width > 0) {
        mark(top, bot);
        check[{top.x,top.y}]++;
        for (int i = str.size() - 1; i >= 0; i--) {
            switch (str[i])
            {
            case('U'):
                top.x++;
                bot.x++;
                break;
            case('D'):
                top.x--;
                bot.x--;
                break;
            case('L'):
                top.y++;
                bot.y++;
                break;
            case('R'):
                top.y--;
                bot.y--;
                break;
            default:
                break;
            }
            if (check[{top.x, top.y}] == 0) {
                mark(top, bot);
                check[{top.x, top.y}]++;
            }
        }
    }
    
    ll total = max(height * width,0);
    ll cnt = 0;
    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= m; j++) {
            a[i][j] = a[i-1][j]+a[i][j-1]-a[i-1][j-1]+mp[i][j];
            //cout << a[i][j]<<" ";
            if (total - a[i][j] == k) {
                cnt++;
            }
        }
        //cout << "\n";
    }
    cout << cnt<<"\n";
}
int main() {

    int t;
    cin >> t;
    while (t--)
    {
        solve();
    }
    return 0;
}

詳細信息

Test #1:

score: 100
Accepted
time: 1ms
memory: 5788kb

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: 7932kb

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:

0
11
20
99
18
15
34
240
15
0
0
13
14
18
26
16
1
19
108
8
2
2
3
7
0
30
16
21
0
8
10
9
15
5
320
11
7
3
0
0
12
0
11
0
0
14
0
22
36
51
23
7
6
4
2
48
28
8
63
22
49
13
10
4
108
10
18
44
0
15
9
0
4
30
14
99
105
10
14
17
0
66
10
11
28
52
34
56
33
14
56
90
14
0
121
3
48
30
36
13
0
30
7
8
3
11
16
45
20
34
0
3...

result:

wrong answer 1st numbers differ - expected: '228', found: '0'