QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#681382#5607. Cribbage On Steroidsvic233333#AC ✓1ms3844kbC++202.8kb2024-10-27 06:28:302024-10-27 06:28:30

Judging History

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

  • [2024-10-27 06:28:30]
  • 评测
  • 测评结果:AC
  • 用时:1ms
  • 内存:3844kb
  • [2024-10-27 06:28:30]
  • 提交

answer

#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using ld = long double;

#define pb push_back

const ld pi = 3.14159265358979323846;
const int mod = 998244353;
const ll INF = 1e18;

template<typename T>
T chmax(T a, T b) {
    return a > b ? a : b;
}

template<typename T>
T chmin(T a, T b) {
    return a > b ? b : a;
}

const int N = (int)1e4 + 1, M = N * 2;

void solve() {
    int n;
    cin >> n;

    vector<int> a, ap;
    for (int i = 0; i < n; i++) {
        char c;
        cin >> c;

        if (c == 'T' || c == 'J' || c == 'Q' || c == 'K') a.pb(10);
        else if (c == 'A') a.pb(1);
        else a.pb(c - '0');

        if(c == 'A') ap.pb(1);
        else if(c == 'T') ap.pb(10);
        else if(c == 'J') ap.pb(11);
        else if(c == 'Q') ap.pb(12);
        else if(c == 'K') ap.pb(13);
        else ap.pb(c - '0');
    }

    map<int, int> mp;
    for(int i = 0; i < a.size(); i++){
        mp[ap[i]]++;
    }

    sort(a.begin(), a.end());
    sort(ap.begin(), ap.end());

    auto get15= [&]() -> ll{
        ll f[16];
        memset(f, 0, sizeof f);

        f[0] = 1;
        for(int i = 0; i < a.size(); i++){
            for(int j = 15; j >= a[i]; j--){
                f[j] += f[j - a[i]];
            }
        }
        return f[15] * 2;
    };

    auto pairs = [&]() -> ll{
        ll qwq = 0;
        for(int i = 1; i <= 13; i++){
            if(mp[i] >= 2){
                qwq += mp[i] * 1ll * (mp[i] - 1);
            }
        }
        return qwq;
    };

    auto runs = [&]() -> ll{
        ll qwq = 0;
        vector<vector<int>> b;
        for(int i = 0; i < a.size(); i++){
            if(b.empty() || b.back()[0] != ap[i]){
                b.pb({ap[i], 1});
            }
            else{
                b.back()[1]++;
            }
        }

        ll owo = 1, c = 0;
        for(int i = 0; i < b.size(); i++){
            if(i){
                if(b[i][0] - b[i - 1][0] != 1){
                    if(c > 2){
                        qwq += owo * c;
                    }
                    c = 1;
                    owo = b[i][1];
                }
                else{
                    c++;
                    owo *= b[i][1];
                }
            }
            else{
                owo = b[i][1];
                c++;
            }
        }
        if(c > 2){
            qwq += owo * c;
        }
        return qwq;
    };

    cout << get15() + pairs() + runs() << endl;
}

int main() {
    // freopen(".in", "r", stdin);
    // freopen(".out", "w", stdout);

    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    cout.tie(nullptr);

    int t = 1;
    //    cin >> t;

    while(t--){
        solve();
    }

    return 0;
}

詳細信息

Test #1:

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

input:

5
4 5 6 5 5

output:

23

result:

ok single line: '23'

Test #2:

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

input:

13
A 2 3 4 5
6 7 8 9 T
J Q K

output:

71

result:

ok single line: '71'

Test #3:

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

input:

10
2 2 3 4 5 8 9 T J Q

output:

45

result:

ok single line: '45'

Test #4:

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

input:

5
5 5 5 5 J

output:

28

result:

ok single line: '28'

Test #5:

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

input:

5
5 5 5 5 5

output:

40

result:

ok single line: '40'

Test #6:

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

input:

11
A 2 3 5 6 7 8 T J Q K

output:

41

result:

ok single line: '41'

Test #7:

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

input:

20
A 2 3 4 5
A 2 3 4 5
A 2 3 4 5
A 2 3 4 5

output:

20308

result:

ok single line: '20308'

Test #8:

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

input:

7
9 6 5 A 4 7 8

output:

16

result:

ok single line: '16'

Test #9:

score: 0
Accepted
time: 1ms
memory: 3612kb

input:

11
Q K
2 2 2
3 3 3
A A
4

output:

224

result:

ok single line: '224'

Test #10:

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

input:

100
A A A A A A A A A A A A A A A A A A A A
A A A A A A A A A A A A A A A A A A A A
A A A A A A A A A A A A A A A A A A A A
A A A A A A A A A A A A A A A A A A A A
A A A A A A A A A A A A A A A A A A A A

output:

506676942699987180

result:

ok single line: '506676942699987180'

Test #11:

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

input:

100
5 5 5 5 5 5 5 5 5 5
5 5 5 5 5 5 5 5 5 5
5 5 5 5 5 5 5 5 5 5
5 5 5 5 5 5 5 5 5 5
5 5 5 5 5 5 5 5 5 5
5 5 5 5 5 5 5 5 5 5
5 5 5 5 5 5 5 5 5 5
5 5 5 5 5 5 5 5 5 5
5 5 5 5 5 5 5 5 5 5
5 5 5 5 5 5 5 5 5 5

output:

333300

result:

ok single line: '333300'

Test #12:

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

input:

5
K J 2 6 8

output:

0

result:

ok single line: '0'

Test #13:

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

input:

7
T J J J Q K K

output:

32

result:

ok single line: '32'

Test #14:

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

input:

5
J Q K A 2

output:

3

result:

ok single line: '3'

Test #15:

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

input:

14
5 5
A 4
2 3
A 4
2 3
T J Q K

output:

438

result:

ok single line: '438'

Test #16:

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

input:

100
A T 4 K K J T 7 4 T Q A 5 K 8 T Q J K 5 3 8 A 9 3 4 7 J 5 7 K J 7 9 3 T 8 9 8 2 8 6 7 J T 6 6 4 5 K 9 6 5 K 5 J T A 4 3 A K 5 T Q T 6 K T 8 Q J K Q 8 A 6 9 5 7 K 3 2 5 Q J 4 T 2 7 2 9 2 T 9 4 5 9 5 5

output:

2440992624714

result:

ok single line: '2440992624714'

Test #17:

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

input:

100
K Q 3 K 9 5 5 7 A T K T 8 5 J 3 6 6 5 A 9 9 3 5 2 5 7 4 9 Q 9 4 9 A 2 T Q 2 K 3 4 4 9 8 K 3 K 5 A 2 Q 5 8 6 6 5 K 2 T 3 2 9 2 8 Q 3 A 6 4 K A 3 A 6 4 5 K A 6 4 3 T 3 Q 4 6 8 7 K 2 A J 3 8 5 K 5 A T 4

output:

1127283925810

result:

ok single line: '1127283925810'

Test #18:

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

input:

100
Q 6 6 A 8 J T T A 2 7 9 2 9 7 K T T 6 7 T 4 A K 2 T 8 T 5 Q J J 7 8 3 A 7 K A 8 J T J J T J 3 2 2 7 A K A J 6 7 6 Q 4 K 2 2 9 2 4 Q K 5 A T 2 6 5 A J 4 9 A Q 3 T A T 2 T 8 2 6 6 K 7 5 A 9 2 A T A 2 4

output:

1001732618498

result:

ok single line: '1001732618498'

Test #19:

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

input:

100
T J 9 2 T 5 3 Q J 6 Q 5 9 Q 4 8 K K 9 3 T Q 9 8 K 3 T A J K K 4 4 4 2 5 A A K A 3 K Q A 6 5 8 A A A 2 T 7 2 7 8 Q J A 8 3 9 2 9 7 7 Q 4 9 5 2 9 J 9 4 2 6 Q 4 2 3 7 5 7 5 7 8 3 9 8 2 Q Q T A A 2 4 6 3

output:

2636894652562

result:

ok single line: '2636894652562'

Test #20:

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

input:

100
J 5 Q 3 T J 8 2 T T 7 4 3 K 3 3 4 6 K T T 7 7 A K 8 9 7 7 K 2 K 2 Q K T 7 Q Q 4 9 3 3 4 5 J K T 3 6 4 5 Q 6 7 7 3 9 8 3 3 A T 3 Q 4 9 5 7 A 3 Q 4 6 J A A Q T A J J A 9 K 8 A A 2 6 T 4 T 9 J A 7 6 J 3

output:

1754378063080

result:

ok single line: '1754378063080'

Test #21:

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

input:

100
T 7 T 5 6 5 A K 7 8 8 K 6 5 5 8 9 Q 2 7 3 5 9 Q Q 9 Q 2 J 5 J 4 4 4 A 9 Q 5 4 5 6 3 5 3 6 T 5 Q J 8 7 4 A 2 8 2 6 T A 4 4 T 7 A T T 6 9 K 8 5 4 6 K 7 5 9 4 J A K 6 K 3 5 2 4 J 2 Q 6 8 J 9 7 8 6 J 6 2

output:

2519534370948

result:

ok single line: '2519534370948'