QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#526842#8090. GurdurrVermeilAC ✓1864ms89852kbC++172.4kb2024-08-21 22:10:032024-08-21 22:10:03

Judging History

This is the latest submission verdict.

  • [2024-08-21 22:10:03]
  • Judged
  • Verdict: AC
  • Time: 1864ms
  • Memory: 89852kb
  • [2024-08-21 22:10:03]
  • Submitted

answer

#include <bits/stdc++.h>

using namespace std;

using ll = long long;
using pii = pair<int, int>;
using pll = pair<ll, ll>;


int getType(string s){
    if (s == "II." || s == ".II") return 0;
    if (s == "III") return 1;
    if (s == "I.I") return 2;
    return 3;
}


int dp[21][1<<20];
int f(int n, int bit){
    if (n <= 0) return 0;
    if (n == 1){
        return bit + 1;
    }
    if (dp[n][bit] != -1) return dp[n][bit];
    vector<int> g;
    dp[n][bit] = 0;
    for (int i=0;i<n;i++){
        if (bit & (1 << i)){
            // III -> II.
            g.push_back(f(n, bit ^ (1 << i)));

            // III -> I.I
            int gn = 0;
            gn ^= f(i, bit & ((1 << i) - 1));
            gn ^= f(n - i - 1, bit >> (i + 1));
            g.push_back(gn);
        }
        else{
            // II. -> .I.
            int gn = 0;
            if (i + 1 < n && bit & (1 << (i + 1))) gn ^= 1; // left III
            if (i - 1 >= 0 && bit & (1 << (i - 1))) gn ^= 1; // right III
            if (n - i - 2 > 0) gn ^= f(n - i - 2, bit >> (i + 2));
            if (i - 1 > 0) gn ^= f(i - 1, bit & ((1 << (i - 1)) - 1));
            g.push_back(gn);
        }
    }
    sort(g.begin(),g.end());
    for (int i: g){
        if (i == dp[n][bit]) dp[n][bit]++;
    }
    return dp[n][bit];
}


signed main() {
    std::ios_base::sync_with_stdio(false);
    std::cin.tie(nullptr);
    int tc = 1;
    for (int i=0;i<=20;i++)fill(dp[i],dp[i]+(1<<20),-1);
    cin>>tc;
    while(tc--){
        int n;cin>>n;
        vector<string> s(n);
        vector<int> v(n);
        vector<bool> sep(n, false);
        int ans = 0;
        for (int i=0;i<n;i++){
            cin>>s[i];
            v[i] = getType(s[i]);
            if (v[i] >= 2) sep[i] = true;
            if (v[i] == 3){
                if (i - 1 >= 0) sep[i - 1] = true;
                if (i + 1 < n) sep[i + 1] = true;
            }
        }
        int nb = 0;
        int c = 0;
        for (int i=0;i<n;i++){
            if (sep[i]){
                if (v[i] == 1){
                    ans ^= 1;
                }
                ans ^= f(c, nb);
                nb = 0;
                c = 0;
            }
            else{
                c++;
                nb <<= 1;
                nb |= v[i];
            }
        }
        ans ^= f(c, nb);
        if (ans)cout<<"First\n";
        else cout<<"Second\n";
    }
    return 0;
}

详细

Test #1:

score: 100
Accepted
time: 4ms
memory: 89612kb

input:

5
1
III
1
I.I
1
.I.
1
.II
2
III
III

output:

First
Second
Second
First
First

result:

ok 5 lines

Test #2:

score: 0
Accepted
time: 4ms
memory: 89844kb

input:

1
3
II.
.II
III

output:

Second

result:

ok single line: 'Second'

Test #3:

score: 0
Accepted
time: 3ms
memory: 89848kb

input:

292
4
III
II.
III
.I.
2
III
I.I
1
.I.
1
I.I
2
III
III
3
I.I
.I.
III
3
II.
III
I.I
4
III
III
III
III
2
.II
.I.
4
.I.
.II
III
.I.
4
I.I
.I.
I.I
III
4
III
.I.
II.
.I.
4
III
I.I
III
I.I
3
III
III
III
4
III
I.I
II.
.II
2
.I.
III
4
III
I.I
.I.
I.I
3
.II
.II
I.I
3
.I.
I.I
I.I
4
I.I
III
I.I
III
1
III
4
.I.
...

output:

First
First
Second
Second
First
First
Second
Second
Second
First
First
First
Second
First
First
First
First
First
Second
Second
First
Second
Second
First
First
Second
Second
Second
First
Second
Second
Second
First
Second
First
First
Second
First
First
Second
First
First
First
First
Second
First
Firs...

result:

ok 292 lines

Test #4:

score: 0
Accepted
time: 0ms
memory: 89780kb

input:

4216
3
.II
I.I
I.I
4
.I.
III
.I.
I.I
1
III
3
.II
I.I
III
4
.II
I.I
.I.
III
3
I.I
I.I
I.I
6
III
III
III
.I.
II.
III
6
I.I
II.
II.
II.
.II
II.
2
I.I
.I.
3
.I.
II.
.II
3
I.I
I.I
III
6
I.I
I.I
.I.
I.I
I.I
I.I
4
I.I
I.I
.I.
II.
2
.II
I.I
5
.II
.I.
I.I
.I.
.II
2
II.
II.
1
.II
4
I.I
III
.I.
.II
3
.II
II.
I...

output:

First
First
First
First
Second
Second
First
First
Second
First
First
Second
Second
First
Second
First
First
First
First
First
Second
Second
Second
Second
First
First
First
Second
Second
First
Second
Second
Second
First
Second
First
First
First
Second
First
First
Second
First
Second
Second
First
Firs...

result:

ok 4216 lines

Test #5:

score: 0
Accepted
time: 12ms
memory: 89616kb

input:

30000
7
.I.
I.I
III
.I.
I.I
.I.
III
3
III
.I.
II.
4
I.I
I.I
III
III
1
II.
1
.I.
2
II.
.I.
6
.I.
I.I
.I.
.II
II.
II.
7
II.
.I.
I.I
.I.
I.I
.II
I.I
3
.I.
.II
.I.
7
III
I.I
.II
III
.II
.II
III
2
.II
I.I
3
III
I.I
.I.
7
I.I
I.I
.I.
II.
.I.
III
III
6
I.I
I.I
II.
.I.
II.
I.I
6
III
III
I.I
.I.
I.I
.II
7
II...

output:

Second
First
First
First
Second
Second
First
First
Second
First
First
First
First
Second
Second
First
First
First
First
First
Second
First
First
First
First
First
First
First
First
First
First
First
First
First
Second
First
Second
First
Second
First
First
Second
First
Second
First
First
Second
First...

result:

ok 30000 lines

Test #6:

score: 0
Accepted
time: 20ms
memory: 89852kb

input:

30000
9
.I.
I.I
.I.
I.I
.I.
I.I
.I.
I.I
.I.
7
.II
III
III
II.
I.I
I.I
.II
3
.I.
I.I
I.I
1
.I.
2
II.
II.
10
III
.I.
I.I
.II
.II
III
.II
I.I
.I.
.II
2
.I.
I.I
10
.I.
I.I
.I.
I.I
.I.
I.I
I.I
.I.
I.I
.I.
10
.I.
III
III
II.
I.I
III
.I.
I.I
II.
.I.
3
I.I
.I.
.II
10
.II
.I.
.II
.II
II.
.II
III
.I.
.II
.I.
...

output:

Second
First
Second
Second
First
Second
Second
Second
Second
Second
First
First
Second
Second
First
Second
Second
Second
First
First
First
First
First
First
Second
Second
First
First
First
First
Second
Second
First
First
Second
First
Second
Second
First
Second
Second
First
First
Second
First
First
F...

result:

ok 30000 lines

Test #7:

score: 0
Accepted
time: 19ms
memory: 89628kb

input:

30000
12
I.I
.I.
III
III
.II
.I.
I.I
III
III
II.
III
III
7
III
II.
.I.
III
.I.
.II
II.
2
III
III
7
I.I
.I.
II.
.II
II.
.I.
II.
6
III
III
I.I
II.
III
.II
10
.I.
I.I
III
.I.
.II
I.I
I.I
III
.II
III
7
.II
I.I
.I.
III
.I.
III
III
11
II.
I.I
III
.I.
II.
.I.
III
III
III
II.
I.I
5
III
.I.
I.I
.II
III
2
I.I...

output:

First
First
First
First
Second
Second
First
First
First
Second
Second
First
Second
First
First
Second
First
First
First
First
First
First
First
First
First
Second
First
First
First
Second
First
Second
First
Second
First
First
Second
Second
First
First
First
First
First
First
First
First
First
First
...

result:

ok 30000 lines

Test #8:

score: 0
Accepted
time: 32ms
memory: 89512kb

input:

30000
12
II.
III
II.
II.
I.I
I.I
I.I
III
III
.II
I.I
I.I
3
.I.
III
.I.
7
.I.
I.I
.I.
I.I
.I.
I.I
.I.
10
II.
II.
.II
III
.II
.II
.II
II.
.I.
.II
14
III
.I.
III
I.I
II.
.I.
III
III
II.
.II
.I.
II.
II.
III
1
III
8
I.I
III
III
III
III
.I.
I.I
III
1
I.I
3
I.I
I.I
.I.
8
.I.
III
I.I
I.I
I.I
.II
III
.I.
7
....

output:

First
First
Second
First
First
First
Second
Second
Second
First
First
First
First
First
First
First
First
First
First
First
Second
Second
Second
Second
First
Second
First
First
First
Second
First
Second
First
First
First
First
First
First
First
First
Second
Second
First
Second
First
Second
First
Sec...

result:

ok 30000 lines

Test #9:

score: 0
Accepted
time: 93ms
memory: 89800kb

input:

30000
11
.I.
III
II.
.I.
II.
I.I
II.
.II
I.I
.I.
III
13
.I.
.II
III
.II
III
III
III
.I.
II.
.I.
III
.II
III
2
II.
III
10
III
II.
III
III
II.
I.I
I.I
III
.I.
III
3
I.I
.II
.II
16
II.
.II
.II
III
II.
III
III
II.
.II
.II
II.
II.
III
III
III
II.
7
III
.II
III
III
III
III
III
14
.I.
III
.I.
III
III
III
I...

output:

First
First
Second
First
First
Second
First
Second
Second
First
First
First
First
First
First
First
Second
Second
Second
Second
First
First
First
Second
First
First
First
Second
First
First
Second
Second
Second
First
First
First
First
First
First
First
First
First
Second
First
Second
First
First
Sec...

result:

ok 30000 lines

Test #10:

score: 0
Accepted
time: 344ms
memory: 89652kb

input:

30000
6
III
.II
.I.
III
II.
.I.
6
I.I
.I.
.II
I.I
.I.
I.I
1
III
1
II.
3
I.I
I.I
I.I
15
I.I
I.I
I.I
I.I
.I.
I.I
.I.
I.I
I.I
I.I
.I.
I.I
I.I
.I.
I.I
2
I.I
I.I
12
III
.I.
III
I.I
.I.
.II
.I.
I.I
.I.
I.I
I.I
.II
9
.I.
I.I
III
III
III
III
.I.
III
.I.
13
.I.
I.I
.I.
III
.II
.II
III
.II
.II
I.I
III
III
.I....

output:

First
Second
First
First
Second
Second
Second
First
First
First
First
Second
First
First
First
First
Second
First
Second
First
First
First
Second
Second
First
First
First
Second
Second
Second
First
Second
First
First
First
First
Second
First
Second
First
First
Second
First
First
First
Second
Second
...

result:

ok 30000 lines

Test #11:

score: 0
Accepted
time: 28ms
memory: 89640kb

input:

30000
11
.I.
.II
.I.
I.I
II.
.I.
II.
.I.
III
.I.
I.I
13
III
III
.II
II.
.I.
I.I
.II
III
I.I
.II
I.I
.I.
I.I
18
.II
.I.
II.
II.
I.I
II.
.I.
III
.II
I.I
.I.
.II
III
I.I
.I.
II.
II.
III
18
.I.
III
.I.
III
III
II.
III
I.I
I.I
.I.
I.I
III
.II
III
.I.
III
.II
II.
4
I.I
III
.I.
III
15
II.
.I.
III
III
.II
I...

output:

First
First
First
Second
Second
Second
First
First
Second
First
First
First
Second
First
First
First
Second
First
First
First
Second
First
Second
First
Second
First
Second
Second
Second
First
First
First
Second
First
Second
First
Second
First
Second
Second
First
First
First
First
First
First
First
F...

result:

ok 30000 lines

Test #12:

score: 0
Accepted
time: 1757ms
memory: 89576kb

input:

30000
11
.II
III
II.
II.
.II
II.
III
II.
II.
II.
II.
17
III
II.
II.
II.
II.
II.
.II
II.
III
II.
III
III
.II
III
.II
.II
.II
11
III
III
III
III
III
III
III
II.
III
II.
III
14
III
III
III
III
III
III
III
III
III
II.
III
III
.II
III
9
III
.II
II.
III
.II
II.
III
III
.II
8
III
II.
.II
III
III
II.
.II
.I...

output:

First
First
Second
Second
First
First
First
Second
First
First
Second
First
First
First
First
First
First
First
First
First
First
First
Second
First
First
First
Second
First
Second
First
First
First
First
First
First
First
First
Second
First
First
Second
Second
Second
Second
First
First
First
First
...

result:

ok 30000 lines

Test #13:

score: 0
Accepted
time: 1703ms
memory: 89580kb

input:

30000
16
II.
III
III
III
I.I
III
III
III
III
III
III
III
.II
III
III
III
18
I.I
I.I
I.I
I.I
I.I
I.I
II.
.II
.II
II.
I.I
.I.
I.I
I.I
.I.
I.I
.II
I.I
17
III
III
II.
II.
.II
.II
II.
.II
.II
.II
II.
III
.II
.II
.II
II.
.II
6
I.I
I.I
I.I
II.
I.I
I.I
2
III
.I.
1
I.I
5
II.
I.I
I.I
I.I
.I.
8
.II
II.
III
I.I...

output:

Second
First
First
First
First
Second
First
First
First
First
First
Second
Second
First
Second
First
Second
First
Second
First
Second
First
Second
Second
Second
First
Second
Second
First
First
First
Second
First
First
First
First
Second
Second
First
First
Second
Second
Second
Second
First
Second
Sec...

result:

ok 30000 lines

Test #14:

score: 0
Accepted
time: 1803ms
memory: 89588kb

input:

30000
3
.II
.II
.II
11
III
I.I
.I.
I.I
III
I.I
II.
.I.
.II
I.I
I.I
7
.II
I.I
I.I
I.I
I.I
III
.I.
17
III
I.I
.II
II.
III
I.I
.I.
III
III
I.I
.I.
I.I
III
I.I
I.I
II.
I.I
6
III
II.
.II
III
I.I
.II
4
II.
III
III
.I.
8
III
III
III
III
.II
III
.II
III
17
.II
.II
.II
II.
III
II.
II.
III
II.
.II
II.
.II
II....

output:

First
Second
Second
First
First
First
First
First
First
First
Second
First
First
First
First
First
First
First
First
First
First
First
Second
Second
First
First
Second
First
Second
Second
First
First
Second
First
Second
First
First
First
First
Second
First
Second
First
First
Second
Second
Second
Fir...

result:

ok 30000 lines

Test #15:

score: 0
Accepted
time: 1801ms
memory: 89644kb

input:

30000
17
II.
III
.II
III
III
III
.II
.II
III
II.
III
III
.II
III
.II
II.
III
1
III
15
III
I.I
.II
III
III
III
.II
.II
II.
II.
I.I
.II
.I.
.II
II.
10
.II
II.
II.
III
II.
II.
.II
II.
II.
II.
5
.II
II.
II.
.II
II.
8
I.I
.I.
III
III
.II
.II
III
I.I
19
.II
.II
II.
II.
.II
.II
.II
.II
II.
.II
.II
II.
.II
...

output:

First
First
Second
Second
First
First
First
Second
First
First
First
First
First
First
First
First
Second
First
First
First
First
First
First
First
First
First
First
First
First
Second
First
Second
First
Second
First
First
First
Second
First
First
First
First
First
First
First
First
First
First
Firs...

result:

ok 30000 lines

Test #16:

score: 0
Accepted
time: 1768ms
memory: 89624kb

input:

30000
11
I.I
.I.
I.I
.I.
I.I
.I.
III
I.I
I.I
.I.
I.I
6
.I.
II.
.II
.I.
III
I.I
11
III
I.I
I.I
.I.
III
III
I.I
I.I
.II
.II
I.I
12
III
III
I.I
.I.
III
II.
.I.
I.I
I.I
I.I
III
I.I
4
.I.
III
.I.
II.
9
III
.I.
III
.I.
I.I
.I.
.II
.I.
III
5
III
.I.
I.I
II.
I.I
15
.II
III
.II
I.I
II.
.I.
II.
I.I
III
III
.I...

output:

First
First
Second
First
First
First
Second
First
First
First
First
First
First
First
First
Second
First
Second
First
Second
First
First
First
Second
First
First
First
Second
Second
First
Second
Second
Second
First
Second
First
Second
Second
First
Second
Second
Second
First
Second
First
First
Second...

result:

ok 30000 lines

Test #17:

score: 0
Accepted
time: 1864ms
memory: 89552kb

input:

30000
2
III
II.
12
I.I
II.
II.
II.
II.
III
.I.
III
I.I
III
I.I
.II
17
.II
III
III
III
III
III
III
.II
III
III
III
III
III
III
III
.II
.II
17
.I.
I.I
.I.
I.I
.I.
I.I
.I.
I.I
I.I
.I.
I.I
.I.
I.I
.I.
I.I
.I.
I.I
4
.I.
.II
III
II.
6
.II
III
II.
.II
III
III
6
III
II.
II.
I.I
.I.
I.I
2
.II
III
18
III
III
...

output:

Second
First
First
Second
Second
First
Second
Second
First
Second
First
Second
First
Second
Second
First
First
Second
First
First
First
First
First
Second
Second
First
First
First
First
First
Second
Second
Second
Second
First
First
First
Second
Second
First
First
First
First
First
First
First
First
...

result:

ok 30000 lines

Test #18:

score: 0
Accepted
time: 1839ms
memory: 89560kb

input:

30000
2
.II
II.
1
.II
9
.II
I.I
III
II.
II.
I.I
III
.I.
I.I
11
.II
II.
III
II.
III
II.
.II
.II
I.I
.I.
II.
11
II.
I.I
III
II.
.I.
III
.II
.I.
III
.I.
II.
1
.II
1
III
5
.I.
I.I
III
I.I
.II
7
III
I.I
III
.I.
III
II.
I.I
8
III
III
.I.
.II
II.
II.
.II
.II
17
I.I
III
III
.I.
II.
I.I
.II
I.I
.I.
.II
III
....

output:

First
First
Second
First
First
First
First
First
First
First
First
First
Second
Second
First
First
First
Second
First
First
First
First
Second
First
Second
First
First
Second
First
First
First
First
First
First
First
First
First
First
First
First
First
First
First
First
Second
First
First
Second
Fir...

result:

ok 30000 lines