QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#781448#9549. The MagicianyeVegeTableWA 0ms3792kbC++203.8kb2024-11-25 16:10:002024-11-25 16:10:28

Judging History

This is the latest submission verdict.

  • [2024-11-27 17:55:10]
  • hack成功,自动添加数据
  • (/hack/1262)
  • [2024-11-26 22:59:39]
  • hack成功,自动添加数据
  • (/hack/1259)
  • [2024-11-25 16:10:28]
  • Judged
  • Verdict: WA
  • Time: 0ms
  • Memory: 3792kb
  • [2024-11-25 16:10:00]
  • Submitted

answer

#include <bits/stdc++.h>
using namespace std;
#define endl '\n'
typedef long long ll;
typedef unsigned long long ull;
typedef __int128 lll;
typedef pair<ll, ll> P;
#define x first
#define y second
#define int long long

// const int mod = 1e9 + 7;
const int pp = 998244353;

const int dx[8] = {-1, 0, 1, 0, -1, -1, 1, 1}, dy[8] = {0, 1, 0, -1, -1, 1, -1, 1};
const int ddx[8] = {1, 1, 2, 2, -1, -1, -2, -2}, ddy[8] = {2, -2, 1, -1, 2, -2, 1, -1};

ll ksm(ll a, ll b, ll p) {
    ll ans = 1;
    a %= p;
    while(b) {
        if(b & 1) ans = (ans * a) % p;
        b >>= 1;
        a = (a * a) % p;
    }
    return ans % p;
}

std::mt19937 rng;  // 随机数生成器  
int rand(int l, int r) {
    std::uniform_int_distribution<int> distribution(l, r);
    return distribution(rng);
}



void solve() {
    int n;
    cin >> n;
    int c[5] = {};
    map<char, int> mp;
    mp['D'] = 1;
    mp['C'] = 2;
    mp['H'] = 3;
    mp['S'] = 4;
    for(int i = 0; i < n; i++) {
        string s;
        cin >> s;
        c[mp[s.back()]] ++ ;
    }
    int t[7] = {};
    for(int i = 1; i <= 6; i++) {
        cin >> t[i];
    }

    int ans = 0;
    priority_queue<int> A;
    priority_queue<int, vector<int>, greater<>> B;
    for(int i = 1; i <= 4; i++) {
        ans += c[i] / 5;
        c[i] %= 5;
        if(t[i]) {
            A.emplace(c[i]);
        } else {
            B.emplace(c[i]);
        }
    }

    while(A.size()) {
        int need = 5 - A.top();
        A.pop();
        int sum = 0;
        while(B.size() && sum < need) {
            if(sum + B.top() <= need) {
                sum += B.top();
                B.pop();
            } else {
                int n_top = need - sum;
                B.pop();
                B.emplace(n_top);
                sum = need;
                break;
            }
        }
        while(A.size() && sum < need) {
            if(sum + A.top() <= need) {
                sum += A.top();
                A.pop();
            } else {
                int n_top = need - sum;
                A.pop();
                A.emplace(n_top);
                sum = need;
                break;
            }
        }
        if(sum < need) break;
        assert(sum == need);
        if(need == 4) {
            if(t[5]) {
                t[5] = 0;
            } else if(t[6]) {
                t[6] = 0;
            } else {
                break;
            }
        } else if(need == 5) {
            if(t[5] && t[6]) {
                ans ++ ;
                t[5] = t[6] = 0;
            }
            break;
        }
        ans ++ ;
    }
    
    vector<int> nB;
    while(B.size()) {
        nB.emplace_back(B.top());
        B.pop();
    }
    sort(nB.begin(), nB.end(), greater<>());
    while(nB.size() > 1) {
        int need = 5 - nB[0];
        nB.erase(nB.begin());
        if(need > 2) break;
        if(need == 1) {
            if(t[5]) {
                nB.back() -- ;
                t[5] = 0;
            } else if(t[6]) {
                nB.back() -- ;
                t[6] = 0;
            } else {
                break;
            }
            ans ++ ;
        } else {
            assert(need == 2);
            int sum = 0;
            for(auto & x : nB) {
                sum += x;
            }
            if(t[5] && t[6] && sum >= 2) {
                ans ++ ;
            } else {
                break;
            }
        }
    }
    cout << ans << endl;
}

/*



*/

signed main () {
    // init(minp, primes, m); // primes
    ios::sync_with_stdio(0);
    cin.tie(0), cout.tie(0);
    // init();
    int _ = 1;
    cin >> _;
    while(_ -- ) {
        solve();
    }
    return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 0ms
memory: 3568kb

input:

4
5
2H 3H 4H 5H 6D
1 1 1 1 0 0
5
2S 3S 4D 5C 6D
0 0 1 0 1 1
5
2S 3S 4D 5C 6D
0 0 1 0 1 0
13
AS 2S 3S 4S 5H 6H 7H 8H 9H TH JH QH KH
0 0 0 0 0 1

output:

1
1
0
2

result:

ok 4 lines

Test #2:

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

input:

13
10
AD 2D 3D 4D 5D 6D 7D 8D 9D TD
0 0 1 0 0 0
10
AH 2D 3D 4D 5D 6D 7D 8D 9D TD
0 0 1 0 0 0
10
AH 2H 3D 4D 5D 6D 7D 8D 9D TD
0 0 1 0 0 0
10
AH 2H 3H 4D 5D 6D 7D 8D 9D TD
0 0 1 0 0 0
10
AH 2H 3H 4H 5D 6D 7D 8D 9D TD
0 0 1 0 0 0
10
AS 2S 3S 4S 5S 6S 7S 8S 9S TS
0 1 0 0 0 0
10
AC 2S 3S 4S 5S 6S 7S 8S ...

output:

2
1
2
2
2
2
1
2
2
2
0
0
0

result:

ok 13 lines

Test #3:

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

input:

2
52
AH AD AC AS 2H 2D 2C 2S 3H 3D 3C 3S 4H 4D 4C 4S 5H 5D 5C 5S 6H 6D 6C 6S 7H 7D 7C 7S 8H 8D 8C 8S 9H 9D 9C 9S TH TD TC TS JH JD JC JS QH QD QC QS KH KD KC KS
1 1 1 1 1 1
52
AH AD AC AS 2H 2D 2C 2S 3H 3D 3C 3S 4H 4D 4C 4S 5H 5D 5C 5S 6H 6D 6C 6S 7H 7D 7C 7S 8H 8D 8C 8S 9H 9D 9C 9S TH TD TC TS JH J...

output:

10
10

result:

ok 2 lines

Test #4:

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

input:

9
12
2H TH 4C QC JH JC 8D KC 3C 6H TC 9S
0 0 0 1 0 0
11
5S 2C TH 8S JD 2S 7D AH 4S AC TS
1 0 0 0 0 0
11
QC 4C 5S QS 9H 5H 6H 7H 3D 7D 8D
1 1 1 0 1 1
11
AS AD 3D 8C 5H 2S JC 6C 8H QD JS
0 1 0 0 0 1
11
KC TH 4S 2H 8S 9S QC 3S AD KS 5D
0 0 1 0 0 1
12
4D 5H 6C 3D KH KS 3S 7S TC 4S 4C JS
0 1 0 1 1 0
12
J...

output:

1
2
2
1
2
2
2
2
2

result:

ok 9 lines

Test #5:

score: -100
Wrong Answer
time: 0ms
memory: 3568kb

input:

10
10
5S 6S 4S 2D JD 3H JH 2H 4H 2C
1 1 0 1 0 0
11
3H 2D 6D 7S KD 6C 8H 2S 9H KH 3D
0 1 0 1 0 1
11
4D AH TS 6S TC 3S 9C 3C 5S JH TD
0 1 0 1 0 0
10
9H 3S TC TS 8S 6S TH 7D TD 5D
0 0 0 0 0 1
11
5H KS QH 4D 8H 6H QC 7H 8D JS JC
0 0 1 0 0 0
10
AD 5D TC 8D 5C 5S 8S QS 3C JD
0 0 0 1 0 1
10
TC TH 4S 8C JC ...

output:

2
2
2
1
1
2
1
1
1
2

result:

wrong answer 7th lines differ - expected: '2', found: '1'