编号 题目 状态 分数 总时间 内存 代码 / 答案文件 提交者 提交时间
#82545 #1324. [L2-3]一步之遥 Accepted 100 174 ms 324 K C++ 17 / 4.8 K NatsusakiYomi 2023-03-14 21:22:17
显示原始代码
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll mod = 1e9 + 7;

bool tsumo(vector<ll> &cur, ll a, ll b) {
    if (a == 4 && b == 1) {
        return true;
    }
    bool ans = 0;
    ll i, k;
    for (k = 0; k < 3; ++k) {
        for (i = 0; i < 9; ++i) {
            if (i < 7 && cur[9 * k + i] && cur[9 * k + i + 1] && cur[9 * k + i + 2]) {
                ++a;
                --cur[9 * k + i];
                --cur[9 * k + i + 1];
                --cur[9 * k + i + 2];
                ans |= tsumo(cur, a, b);
                ++cur[9 * k + i];
                ++cur[9 * k + i + 1];
                ++cur[9 * k + i + 2];
                --a;
            }
            if (ans) {
                return ans;
            }
            if (cur[9 * k + i] > 2) {
                ++a;
                cur[9 * k + i] -= 3;
                ans |= tsumo(cur, a, b);
                cur[9 * k + i] += 3;
                --a;
            }
            if (ans) {
                return ans;
            }
            if (cur[9 * k + i] > 1 && !b) {
                ++b;
                cur[9 * k + i] -= 2;
                ans |= tsumo(cur, a, b);
                cur[9 * k + i] += 2;
                --b;
            }
            if (ans) {
                return ans;
            }
        }
    }
    for (i = 0; i < 7; ++i) {
        if (cur[9 * k + i] > 2) {
            ++a;
            cur[9 * k + i] -= 3;
            ans |= tsumo(cur, a, b);
            cur[9 * k + i] += 3;
            --a;
        }
        if (ans) {
            return ans;
        }
        if (cur[9 * k + i] > 1 && !b) {
            ++b;
            cur[9 * k + i] -= 2;
            ans |= tsumo(cur, a, b);
            cur[9 * k + i] += 2;
            --b;
        }
        if (ans) {
            return ans;
        }
    }
    return 0;
}

int main() {
    ll t;
    cin >> t;
    while (t--) {
        vector<ll> cur(34, 0);
        ll i, j;
        string s;
        cin >> s;
        for (i = 0; i < 28; i += 2) {
            ll index = s[i] - '1';
            if (s[i + 1] == 's') {
                index += 9;
            }
            if (s[i + 1] == 'p') {
                index += 18;
            }
            if (s[i + 1] == 'z') {
                index += 27;
            }
            ++cur[index];
        }
        if (tsumo(cur, 0, 0)) {
            cout << "Tsumo!" << endl;
        } else {
            vector<vector<ll>> total;
            for (i = 0; i < 34; ++i) {
                if (!cur[i]) {
                    continue;
                }
                --cur[i];
                vector<ll> tmp = { i };
                for (j = 0; j < 34; ++j) {
                    if (j == i) {
                        continue;
                    }
                    ++cur[j];
                    if (tsumo(cur, 0, 0)) {
                        tmp.push_back(j);
                    }
                    --cur[j];
                }
                ++cur[i];
                if (tmp.size() > 1) {
                    total.push_back(tmp);
                }
            }
            cout << total.size();
            cout << endl;
            sort(total.begin(), total.end(),
                 [](const vector<ll> &a, const vector<ll> &b) { return a[0] < b[0]; });
            for (auto &&row : total) {
                for (auto &&ele : row) {
                    if (ele < 9) {
                        cout << ele + 1;
                        cout << 'm';
                    } else {
                        if (ele < 18) {
                            cout << ele - 8;
                            cout << 's';
                        } else {
                            if (ele < 27) {
                                cout << ele - 17;
                                cout << 'p';
                            } else {
                                cout << ele - 26;
                                cout << 'z';
                            }
                        }
                    }
                    cout << ' ';
                }
                cout << endl;
            }
        }
    }
    return 0;
}
子任务 #1
Accepted
得分:100
测试点 #1
Accepted
得分:100
用时:31 ms
内存:320 KiB

输入文件(1.in

6
1m1m1m2m3m4m5m6m7m8m9m9m9m1s
2m3m4m4m4m4m5m6m7m8m9m9m9m1p
2m3m4m4m4m4m5m6m6m6m6m7m8m1z
1m2m3m4
<83 bytes omitted>

答案文件(1.out

4
2m 1s
5m 1s
8m 1s
1s 1m 2m 3m 4m 5m 6m 7m 8m 9m
4
2m 1p
5m 1p
8m 1p
1p 1m 2m 3m 4m 5m 6m 
<125 bytes omitted>

用户输出

4
2m 1s 
5m 1s 
8m 1s 
1s 1m 2m 3m 4m 5m 6m 7m 8m 9m 
4
2m 1p 
5m 1p 
8m 1p 
1p 1m 2m 3m 4m 5m 6m 7m 8m 9m 
4
2m 1z 
5m 1z 
8m 1
<93 bytes omitted>

系统信息

Exited with return code 0
测试点 #2
Accepted
得分:100
用时:28 ms
内存:256 KiB

输入文件(2.in

10
7z7z7z2z2z3z3z4z1s2s3s4s5s6s
2p3p5p6p6p6p6p7p3s3s3s5s6s7s
4m5m6m2p2p5p6p7p7p8p8p2s3s4s
2p3p3p
<204 bytes omitted>

答案文件(2.out

1
4z 2z 3z
4
3s 1p 4p
2p 3p
3p 2p
6p 1p 4p 
3
5p 6p 9p
7p 2p 8p
8p 6p 9p
3
3s 4s
4s 3s
<119 bytes omitted>

用户输出

1
4z 2z 3z 
4
3s 1p 4p 
2p 3p 
3p 2p 
6p 1p 4p 
3
5p 6p 9p 
7p 2p 8p 
8p 6p 9p 
3
3s 4s 
4s 3s 
3z 2s 5s 
Tsumo!
2
1z 2z 
2z 1z 
<80 bytes omitted>

系统信息

Exited with return code 0
测试点 #3
Accepted
得分:100
用时:17 ms
内存:256 KiB

输入文件(3.in

10
5p6p7p8p9p4p4p4p2p2p2p6p6p6p
5m6m4s4s4s6s6s6s6z6z6z2p3p4p
2z2z2z3z3z6s7s8s5m6m7m3s3s3s
4p5p6p
<202 bytes omitted>

答案文件(3.out

Tsumo!
5
5m 6m
6m 5m 
4s 4m 7m
6s 4m 7m
6z 4m 7m
Tsumo!
Tsumo!
3
1s 6s
4s 6s 
7s 3s 6s

<87 bytes omitted>

用户输出

Tsumo!
5
5m 6m 
6m 5m 
4s 4m 7m 
6s 4m 7m 
6z 4m 7m 
Tsumo!
Tsumo!
3
1s 6s 
4s 6s 
7s 3s 6s 
Tsumo!
3
6m 2s 4s 5s 
9m 2s 4s 5s 

<48 bytes omitted>

系统信息

Exited with return code 0
测试点 #4
Accepted
得分:100
用时:35 ms
内存:256 KiB

输入文件(4.in

10
1m1m2m3m4m5m6m2s3s4s5s6s6s6s
1m2m3m4m1s2s3s4s1p2p3p9p9p9p
2s2s3s3s4s4s5s5s6p7p8p1z1z2z
1s2s3s
<202 bytes omitted>

答案文件(4.out

3
1m 1s 2s 4s 5s 7s
2s 1m 4m 7m
5s 1m 4m 7m
4
1m 1s 4s 
4m 1s 4s
1s 1m 4m
4s 1m 4m
1
2z 2s
<218 bytes omitted>

用户输出

3
1m 1s 2s 4s 5s 7s 
2s 1m 4m 7m 
5s 1m 4m 7m 
4
1m 1s 4s 
4m 1s 4s 
1s 1m 4m 
4s 1m 4m 
1
2z 2s 5s 1z 
3
1s 2s 3s 
2s 3s 
3s 2s
<179 bytes omitted>

系统信息

Exited with return code 0
测试点 #5
Accepted
得分:100
用时:63 ms
内存:324 KiB

输入文件(5.in

10
2m2m3m3m3m3m4m6m6m7m7m7m8m8m
1s1s2s2s2s3s3s4s4s7s8s9s9s9s
1p1p2p2p2p3p4p5p7p7p8p9p9p9p
1m1m1m
<202 bytes omitted>

答案文件(5.out

2
2m 6m 7m 8m
7m 1m 2m 4m 5m
3
1s 3s
2s 1s 4s 6s 9s 
4s 3s
3
7p 1p 6p 9p
8p 1p 7p 
9p 8p

<475 bytes omitted>

用户输出

2
2m 6m 7m 8m 
7m 1m 2m 4m 5m 
3
1s 3s 
2s 1s 4s 6s 9s 
4s 3s 
3
7p 1p 6p 9p 
8p 1p 7p 
9p 8p 
6
1m 5m 
2m 4m 6m 9m 
4m 3m 5m 6m
<429 bytes omitted>

系统信息

Exited with return code 0