QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#781458 | #9549. The Magician | yeVegeTable | WA | 0ms | 3860kb | C++20 | 3.8kb | 2024-11-25 16:11:16 | 2024-11-25 16:11:21 |
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:11:16]
- 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() > 1 && A.top() == 0) {
A.pop();
}
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: 3620kb
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: 3860kb
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: 0
Accepted
time: 0ms
memory: 3844kb
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: 3556kb
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'