QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#830782#385. 游戏Octagons100 ✓29ms23640kbC++203.6kb2024-12-24 22:45:342024-12-24 22:45:34

Judging History

This is the latest submission verdict.

  • [2024-12-24 22:45:34]
  • Judged
  • Verdict: 100
  • Time: 29ms
  • Memory: 23640kb
  • [2024-12-24 22:45:34]
  • Submitted

answer

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef long double ld;
#define sz(x) int32_t(x.size())
#define all(x) x.begin(),x.end()
#define pb push_back
#define F first
#define S second
const int N = 1e5+40;
int n, d, q, id[N][3], comp[N], nxt = 0, cur;
bool vis[N];
string s;
vector<int> adj[N], rev[N], ids;
int id1[N], id2[N];
char ch1[N], ch2[N];

int get(int i, char x) {
    return id[i][int(x - 'a')];
}

void ade(int u, int v) {
    adj[u].push_back(v);
    rev[v].push_back(u);
}

void init() {
    cur = 0;
    for (int i = 0; i < N; i++) {
        vis[i] = false;
        adj[i].clear();
        rev[i].clear();
    }
    nxt = 0;
}

vector<int> topo;

void dfs_topo(int u) {
    if (vis[u])return;
    vis[u] = true;
    for (auto &v : adj[u]) {
        dfs_topo(v);
    }
    topo.push_back(u);
}

void get_scc(int u) {
    if (vis[u])return;
    vis[u] = true;
    comp[u] = cur;
    for (auto &v : rev[u]) {
        get_scc(v);
    }
}

void val() {
    init();
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < 3; j++) {
            if (j == int(s[i] - 'a')) {
                id[i][j] = -1;
                continue;
            }
            id[i][j] = nxt++;
        }
    }
    for (int i = 0; i < q; i++) {
        if (s[id1[i]] == ch1[i])continue;
        if (s[id2[i]] == ch2[i]) {
            int f = 0, sc = 0;
            while (id[id1[i]][f] == -1)f++;
            while (id[id1[i]][sc] == -1 || sc == f)sc++;
            if (f != int(ch1[i]-'a'))swap(f, sc);
            ade(id[id1[i]][f], id[id1[i]][sc]);
            continue;
        }
        int x = id[id1[i]][int(ch1[i]-'a')];
        int y = id[id2[i]][int(ch2[i]-'a')];
        ade(x, y);
        ade((y^1), (x^1));
    }
    for (int i = 0; i < nxt; i++) {
        dfs_topo(i);
    }
    memset(vis, 0, sizeof vis);
    while (!topo.empty()) {
        int u = topo.back();
        topo.pop_back();
        if (!vis[u]) {
            get_scc(u);
            cur++;
        }
    }
    for (int i = 0; i < n; i++) {
        int f = 0, sc = 0;
        while (id[i][f] == -1)f++;
        while (id[i][sc] == -1 || sc == f)sc++;
        if (comp[id[i][f]] == comp[id[i][sc]])return;
    }
    string ans = s;
    for (int i = 0; i < n; i++) {
        int f = 0, sc = 0;
        while (id[i][f] == -1)f++;
        while (id[i][sc] == -1 || sc == f)sc++;
        ans[i] = (comp[id[i][f]] > comp[id[i][sc]] ? char(f+'A') : char(sc+'A'));
        ans[i] = tolower(ans[i]);
    }
    for (int i = 0; i < q; i++) {
        if (ans[id1[i]] == ch1[i]) {
            if (ans[id2[i]] != ch2[i]) {
                cout<<ans<<endl;
                assert(false);
            }
        }
    }
    for (int i = 0; i < n; i++) {
        int f = 0, sc = 0;
        while (id[i][f] == -1)f++;
        while (id[i][sc] == -1 || sc == f)sc++;
        cout << (comp[id[i][f]] > comp[id[i][sc]] ? char(f+'A') : char(sc+'A'));
    }
    exit(0);
}

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    cin >> n >> d >> s >> q;
    for (int i = 0; i < n; i++) {
        if (s[i] == 'x')ids.push_back(i);
    }
    for (int i = 0; i < q; i++) {
        cin >> id1[i] >> ch1[i] >> id2[i] >> ch2[i];
        --id1[i], --id2[i];
        ch1[i] = tolower(ch1[i]);
        ch2[i] = tolower(ch2[i]);
    }
    for (int i = 0; i < (1 << sz(ids)); i++) {
        for (int j = 0; j < sz(ids); j++) {
            char c = 'a';
            if ((i & (1 << j)))c = 'b';
            s[ids[j]] = c;
        }
        val();
    }
    cout << -1;
}

詳細信息


Pretests


Final Tests

Test #1:

score: 5
Accepted
time: 1ms
memory: 5628kb

input:

2 0
ba
4
2 C 2 C
1 B 1 A
2 C 1 C
2 B 1 A

output:

AB

result:

ok 

Test #2:

score: 5
Accepted
time: 1ms
memory: 5620kb

input:

2 1
xc
4
2 B 2 A
2 A 1 C
2 C 2 C
2 B 1 A

output:

CA

result:

ok 

Test #3:

score: 5
Accepted
time: 1ms
memory: 3716kb

input:

5 0
bcbbb
10
1 B 1 C
3 C 1 C
2 B 5 A
1 C 1 C
2 A 5 A
3 A 1 C
2 B 1 C
3 A 1 B
1 B 4 B
1 B 4 A

output:

CACAA

result:

ok 

Test #4:

score: 5
Accepted
time: 1ms
memory: 3744kb

input:

5 2
acxax
10
2 B 1 A
3 C 4 C
4 B 3 C
5 B 3 B
2 B 3 A
3 A 2 A
5 B 1 C
3 B 1 B
2 C 4 C
4 B 2 A

output:

BACCC

result:

ok 

Test #5:

score: 5
Accepted
time: 0ms
memory: 5632kb

input:

10 0
abbbacabab
20
5 A 3 B
9 A 4 C
4 C 10 A
8 B 3 C
6 C 10 A
5 A 9 C
8 A 2 C
5 A 8 B
10 A 10 A
5 B 4 B
6 C 10 C
2 C 4 B
5 C 7 B
5 A 10 B
3 A 7 B
6 B 4 B
3 C 8 B
1 B 3 B
4 B 3 C
8 A 2 A

output:

CAAACABCBA

result:

ok 

Test #6:

score: 5
Accepted
time: 1ms
memory: 5624kb

input:

10 4
xbbxccxbxc
20
2 A 10 A
10 C 4 C
1 A 5 A
2 A 2 A
9 C 2 B
2 B 6 C
2 B 9 A
3 B 2 B
4 B 9 A
4 A 5 A
2 B 10 A
3 B 6 A
8 C 8 B
3 B 3 B
3 B 7 A
9 C 6 C
6 A 8 C
4 A 10 A
2 C 4 B
9 C 7 B

output:

BAACABBABA

result:

ok 

Test #7:

score: 5
Accepted
time: 1ms
memory: 5680kb

input:

20 0
cccccccccccccccccccc
40
15 A 13 C
6 B 19 A
3 C 5 B
20 C 6 C
1 C 10 B
10 C 7 C
13 B 17 A
1 A 3 A
15 A 15 A
13 B 18 B
14 A 4 A
1 A 3 A
4 C 14 A
1 B 6 B
2 B 8 B
3 C 15 A
1 B 17 B
6 A 17 A
12 B 6 A
8 B 1 C
15 B 1 B
18 C 3 C
2 A 8 A
14 B 6 B
15 C 9 A
17 A 10 C
15 A 7 A
8 C 6 A
18 B 12 C
14 C 10 A
9 ...

output:

BAABABAABAAAABBABAAA

result:

ok 

Test #8:

score: 5
Accepted
time: 1ms
memory: 7884kb

input:

20 0
caaabacbacabbcacabaa
40
7 B 19 C
15 A 12 B
2 A 12 C
20 B 1 B
4 B 4 A
4 A 18 C
4 A 3 A
15 C 12 A
2 C 12 C
15 B 6 A
10 A 12 B
13 C 7 C
2 C 6 C
16 C 18 A
12 B 17 B
8 C 11 B
14 B 11 A
8 B 8 C
19 A 7 C
6 C 3 C
1 C 4 B
1 C 5 A
13 B 4 C
14 B 9 A
11 A 9 C
8 B 16 B
2 C 20 A
2 A 14 C
10 B 13 A
17 A 19 B
...

output:

BBCCABAABBBAAACABACC

result:

ok 

Test #9:

score: 5
Accepted
time: 2ms
memory: 5692kb

input:

20 8
xccccccxxcxcccccxxxx
40
12 A 18 C
16 C 14 C
10 B 2 C
1 A 10 A
11 A 13 B
15 A 6 B
8 A 14 B
16 A 15 B
4 C 5 C
19 C 4 B
17 C 11 A
12 B 14 C
18 B 17 B
14 A 11 C
16 C 6 C
13 C 20 B
16 B 13 C
8 B 7 C
9 B 16 B
1 B 18 A
7 B 6 A
8 B 19 A
16 C 17 A
8 A 6 A
10 A 14 B
20 C 6 B
13 C 5 A
14 A 3 C
20 B 14 C
4...

output:

CAABBBACCAAABBBACCBC

result:

ok 

Test #10:

score: 5
Accepted
time: 7ms
memory: 5572kb

input:

20 8
cbabxccxxxxxbaxxaaac
40
8 C 7 C
19 C 12 C
19 A 6 B
6 C 20 B
12 B 18 B
6 A 10 B
11 B 14 B
20 C 18 B
4 A 7 C
18 A 1 A
18 C 14 A
5 B 13 B
3 B 7 A
8 C 1 C
14 B 4 C
13 A 1 A
7 A 19 A
11 B 16 A
9 A 7 A
11 C 4 B
10 B 1 A
1 A 1 B
5 A 8 C
20 C 13 A
3 B 11 B
18 C 13 A
11 A 20 B
3 A 16 C
17 A 5 C
6 C 17 B...

output:

BCCCCBBBBCAACBBBCBBB

result:

ok 

Test #11:

score: 5
Accepted
time: 0ms
memory: 7932kb

input:

100 0
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
200
62 A 60 B
22 A 46 A
87 A 67 B
29 A 43 A
64 B 28 B
83 B 16 A
50 A 64 B
48 A 95 A
28 B 90 A
5 A 12 A
23 B 86 A
62 A 81 B
64 B 9 B
5 A 10 B
89 B 18 B
69 B 62 A
63 A 55 A
28 B 92 B
49 A 43 A
71...

output:

ABABBBAAAAABBBBBBABBABABABAABBBBAABBAABBAABBABBBBBABBABABBAAABBABABBAABBAABABBAAAAABBBAAABBAAABBBBBB

result:

ok 

Test #12:

score: 5
Accepted
time: 1ms
memory: 5724kb

input:

100 0
cabaabbaaabacbaccbccacbcaaccccbbcccbabbaaaacccbaaabbcaaabaabcaabcbbcaabaabaaccacbaabbacbbacaaabcbbca
200
94 C 31 A
29 B 48 B
89 C 52 A
49 B 11 C
10 C 66 C
90 B 49 B
80 B 19 B
26 B 54 B
20 B 65 B
52 A 80 B
51 A 33 A
94 C 6 C
18 C 60 A
87 B 45 B
12 C 7 A
26 B 57 A
89 C 54 B
4 B 29 B
39 A 67 C
22...

output:

ABACCACCBCCBAABAAAAABBABBCBAAACCBBBCCACBCCBAABCCCBCCBCBBABCCABBCBCABBCABBCBCABBACCCACBAAACABBBABCCBB

result:

ok 

Test #13:

score: 5
Accepted
time: 0ms
memory: 5648kb

input:

100 8
cccccxccccccxccccxccccccxcccccccxccccxccccccccccxccccccccccccccccccccccccccccccccccccccxcccccccccccc
200
38 A 13 B
60 A 18 B
36 B 76 B
95 A 7 B
25 A 58 B
53 A 27 A
21 A 78 A
15 A 48 A
52 B 59 A
65 B 68 A
72 A 47 A
95 A 48 A
96 A 67 A
96 A 47 A
46 B 96 A
79 B 36 B
60 A 90 B
5 B 95 A
17 A 99 A
2...

output:

AABBACBBAABACBBABBBABAAABAAABBBACBAAABAABBAABABACBBAAAABBBBBBBAAAAABAAABBAAABBAAAABABBBBBABAAABBAABB

result:

ok 

Test #14:

score: 5
Accepted
time: 1ms
memory: 5704kb

input:

100 8
ccbbcaacxxbcxacbcaabxaaccbxcaabacbccaccacbcacxcacccccccbcacbaabbabaacbbababaxabcccacaxabaaacabbcbccc
200
41 A 8 A
75 C 86 C
93 B 26 A
83 C 55 A
49 B 69 B
50 B 54 B
41 A 85 C
43 B 4 A
75 C 95 A
2 A 54 B
14 C 3 A
18 C 79 A
5 B 8 A
61 C 90 B
48 C 96 B
84 A 40 C
55 A 58 B
77 A 47 A
36 A 60 A
2 A 8...

output:

BBCAABBBCBCBBBBAABBCBBCABCBABCCBAAABCAACBCABABACAAAAAABCACACCCCCCCBBACCBABACBBCBBABBBBCCCBCACCCBABBA

result:

ok 

Test #15:

score: 5
Accepted
time: 4ms
memory: 6752kb

input:

5000 0
ccbbbbacccabaacccbccaabcbcbabcabbbcbccacbbcccbccbcacbacaacbccaaacbcaabbacacabaaaccacbaccbbbccaabbbcabcbabaaccbaacacbaaccbacaccababcabbbccacbcabaabababaacccbbababbaabbbaccbabaabbbcbacbbbbbacbbabcabacbbcbaaaaaaccbaaaabccccacaaacabaabaccacabbaacaaccbbcbcaaaccbbccbccbccaacbccacbcbbacaaaaabbacbaab...

output:

-1

result:

ok 

Test #16:

score: 5
Accepted
time: 2ms
memory: 6860kb

input:

5000 8
ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc...

output:

ABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABAB...

result:

ok 

Test #17:

score: 5
Accepted
time: 4ms
memory: 6904kb

input:

5000 8
abcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcab...

output:

BCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCA...

result:

ok 

Test #18:

score: 5
Accepted
time: 12ms
memory: 22980kb

input:

50000 0
baabcbbaacbbabababbbabcbcbbcabccaaacccbaaabcabccccbbaacbaaacbcacbabbbbabccabaabbcabacacaaabbaccccbcacaaacbcaacbcacbbabbcbabccbbcacbacbbccacbcabcbcbcacbaacaaccbcbabaaacbcbbccbcacacccbbcabcaccacaaaaaacbcaccaacbbbaaaccaaccaaacbacbaaccaabccaababbabaaaaacbaabaccabacbcbabbcbaabacbbacbbaaabababccac...

output:

ABBAAAABBAAABABABAAABAAAAAAABAAABBBAAAABBBAABAAAAAAABBAABBBAAABAABAAAABAAABABBAAABABABABBBAABAAAAAABABBBAAABBAAABAAABAAAABAAAAAABAABAAAAABAAABAAAAAABAABBABBAAAAABABBBAAAAAAAAABABAAAAAABAABAABABBBBBBAAABAABBAAAABBBAABBAABBBAABAABBAABBAAABBABAABABBBBBAABBABAABABAAAABAAAABBABAAABAAABBBABABAAABABBAABAAA...

result:

ok 

Test #19:

score: 5
Accepted
time: 29ms
memory: 23640kb

input:

50000 8
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc...

output:

ABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABAB...

result:

ok 

Test #20:

score: 5
Accepted
time: 20ms
memory: 23368kb

input:

50000 8
abcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabca...

output:

BCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCA...

result:

ok 

Extra Test:

score: 0
Extra Test Passed