QOJ.ac

QOJ

ID提交记录ID题目HackerOwner结果提交时间测评时间
#1246#780524#9549. The MagicianImakfImakfSuccess!2024-11-25 11:23:292024-11-25 11:23:32

详细

Extra Test:

Wrong Answer
time: 0ms
memory: 3668kb

input:

4
18
2C AC 3H 2H AH 3D 2D AD TS 9S 8S 7S 6S 5S 4S 3S 2S AS
1 0 0 1 1 1
25
AC 3H 2H AH 8D 7D 6D 5D 4D 3D 2D AD KS QS JS TS 9S 8S 7S 6S 5S 4S 3S 2S AS
0 1 0 1 1 1
29
4C 3C 2C AC 7H 6H 5H 4H 3H 2H AH 9D 8D 7D 6D 5D 4D 3D 2D AD 9S 8S 7S 6S 5S 4S 3S 2S AS
1 1 1 0 1 1
25
3C 2C AC 3H 2H AH 9D 8D 7D 6D 5D 4...

output:

3
5
6
5

result:

wrong answer 3rd lines differ - expected: '5', found: '6'

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#780524#9549. The MagicianImakfWA 0ms3708kbC++233.3kb2024-11-25 11:23:022024-11-25 11:32:59

answer

// https://codeforces.com/gym/105540/submission/292569443
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define inf INT32_MAX
#define endl '\n'
int t1,t2,t3,t4,t5,t6,n;//方块 梅花 红桃 黑桃 恋人 死神
string s1;
struct node{
    int sum,change;
    friend bool operator  < (node a,node b){
        if(a.change == b.change){
            return a.sum < b.sum;
        }
        return a.change < b.change;
    }
} a[4];//C D H S 梅花 方块 红桃 黑桃
void init(){
    for(int i = 0;i <= 3;i ++){
        a[i].sum = a[i].change = 0;
    }
}
void solve(){
    cin >> n;
    init();
    for(int i = 1;i <= n;i ++){
        cin >> s1;
        if(s1[1] == 'C'){
            a[0].sum ++;
        }
        if(s1[1] == 'D'){
            a[1].sum ++;
        }
        if(s1[1] == 'H'){
            a[2].sum ++;
        }
        if(s1[1] == 'S'){
            a[3].sum ++;
        }
    }
    cin >> a[1].change >> a[0].change >> a[2].change >> a[3].change >> t5 >> t6;
    int ans = 0;
    ans += (a[0].sum / 5) + (a[1].sum / 5) + (a[2].sum / 5) + (a[3].sum / 5);
    a[0].sum %= 5,a[1].sum %= 5,a[2].sum %= 5,a[3].sum %= 5;
    sort(a ,a + 4);
    for(int i = 3;i >= 0;i --){
        if(a[i].change) continue;
        if(a[i].sum == 4 && (t5 || t6)){
            for(int j = 0;j < i; j ++){
                if(a[j].sum) {
                    a[j].sum --;
                    break;
                }
            }
            if(t5){
                ans ++;
                t5 = 0;
                a[i].sum = 0;
            }
            else{
                ans ++;
                t6 = 0;
                a[i].sum = 0;
            }
        }
    }
    sort(a ,a + 4);
    for(int i = 3;i >= 0;i --){//有问题
        int res = min(5 - a[i].sum,(int)3);
        if(!a[i].change) continue;
        for(int j = 0;j < i;j ++){
            if(res == 0) break;
            if(i == j) continue;
            int temp = min(res,a[j].sum);
            res -= temp;
            a[j].sum -= temp;
            a[i].sum += temp;
            if(a[i].sum == 5){
                ans ++;
                a[i].sum = 0;
                break;
            }
        }
    }
    sort(a,a + 4);
    for(int i = 3;i >= 0;i --){
        if(a[i].sum < 3) continue;
        if(!t5 && !t6) break;
            for(int j = 0;j < i;j ++){
                if(a[j].sum){
                    if(t5){
                        t5 = 0;
                        a[j].sum --;
                        a[i].sum ++;
                    }
                    if(a[i].sum == 5){
                        a[i].sum = 0;
                        ans ++;
                        break;
                    }
                    if(a[j].sum == 0) continue;
                    if(t6){
                        t6 = 0;
                        a[j].sum --;
                        a[i].sum ++;
                    }
                    if(a[i].sum == 5){
                        a[i].sum = 0;
                        ans ++;
                        break;
                    }
                }
            }
    }
    cout << ans << '\n';
}

signed main(){
    int tt = 1;
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    cin >> tt;
    while(tt --){
        solve();
    }
}