QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#780771#9549. The MagicianyimgWA 1ms3624kbC++203.0kb2024-11-25 13:04:492024-11-25 13:04:50

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 13:04:50]
  • Judged
  • Verdict: WA
  • Time: 1ms
  • Memory: 3624kb
  • [2024-11-25 13:04:49]
  • Submitted

answer

#include <bits/stdc++.h>
using namespace std;
void work()
{
    int n;
    cin >> n;
    map<char, int> cnt;
    for (int i = 0; i < n; ++i)
    {
        string s;
        cin >> s;
        cnt[s[1]]++;
    }
    vector<int> t(10);
    for(int i = 1; i <= 6; ++i) cin >> t[i];
    int ans = 0;
    ans += cnt['D'] / 5;
    ans += cnt['C'] / 5;
    ans += cnt['H'] / 5;
    ans += cnt['S'] / 5;
    cnt['D'] %= 5;
    cnt['C'] %= 5;
    cnt['H'] %= 5;
    cnt['S'] %= 5;
    // cout << ans << "\n";
    int beg = ans;
    vector<char> mp(10);
    int ct = t[5] + t[6];
    mp[1] = 'D'; mp[2] = 'C'; mp[3] = 'H'; mp[4] = 'S';
    auto dfs = [&](auto &&self, int d, int tmp) -> void
    {
        // if(tmp == 2){
        //     cout << " HHH : " << d << "\n";
        // }
        if (d == 5)
        {
            vector<int> a;
            a.push_back(cnt['D']);
            a.push_back(cnt['C']);
            a.push_back(cnt['H']);
            a.push_back(cnt['S']);
            sort(a.begin(), a.end(), greater<int>());
            // for(auto i : a){
            //     cout << i << " ";
            // }
            // cout << "\n";
            int tt = ct;
            if(tt && a[0] >= 4){
                tt--;
                a[0] = 0;
                tmp++;
            }
            if(tt && a[1] >= 4){
                tt--;
                a[1] = 0;
                tmp++;
            }
            if (tt == 2 && a[0] >= 3){
                tt = 0; a[0] = 0;
                tmp++;
            }
            int sum = 0;
            bool flag = 0;
            for(int i = 0; i < 4; ++i) sum += a[i], flag |= t[i + 1];
            if(sum >= 5 && flag && tt == 2) tmp++;
            if(tt == 0){
                for(int i = 1; i <= 4; ++i){
                    if(cnt[mp[i]] >= 2 && t[i] && sum >= 5){
                        tmp++; sum -= 5;
                    }
                }
            }
            // cout << sum << " " << flag << " " << tmp << "\n";
            ans = max(ans, tmp);
            return;
        }
        if (!t[d])
        {
            
            self(self, d + 1, tmp);
        }
        else
        {
            self(self, d + 1, tmp);
            
            // cout << "LLL : " << tmp << "\n";
            for(int i = 1; i <= 4; ++i){
                if(i == d) continue;
                if(cnt[mp[d]] >= 2  && cnt[mp[d]] + cnt[mp[i]] >= 5){
                    int log = cnt[mp[d]];
                    cnt[mp[d]] = 0;
                    cnt[mp[i]] -= 5 - log;
                    t[d] = 0;
                    self(self, d + 1, tmp + 1);
                    cnt[mp[d]] = log;
                    cnt[mp[i]] += 5 - log; 
                    t[d] = 1;
                }

            }
        }
    };
    dfs(dfs, 1, beg);
    cout << ans << "\n";
}

int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);
    int t;
    cin >> t;
    while (t--)
        work();
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

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

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: 3500kb

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: 3560kb

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: -100
Wrong Answer
time: 0ms
memory: 3500kb

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
1
2
2
2
2

result:

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