QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#780748 | #9549. The Magician | yimg | WA | 0ms | 3656kb | C++20 | 2.7kb | 2024-11-25 12:57:32 | 2024-11-25 12:57:40 |
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 12:57:32]
- 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++;
// 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: 0ms
memory: 3616kb
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: 3656kb
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: 3504kb
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: 3560kb
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 1 2 1 1 2 2 2 2
result:
wrong answer 2nd lines differ - expected: '2', found: '1'