QOJ.ac
QOJ
ID | 提交记录ID | 题目 | Hacker | Owner | 结果 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|
#1211 | #755127 | #9549. The Magician | Imakf | ucup-team191 | Failed. | 2024-11-20 17:45:20 | 2024-11-20 17:45:21 |
詳細信息
Extra Test:
Accepted
time: 930ms
memory: 36384kb
input:
5 22 AH 2H 3H 4H 5H 6H 7H AD 2D 3D 4D 5C 6C 7C 8C 9S TS JS QS KH AC 2C 1 1 1 1 1 1 21 AH 2H 3H 4H 5H 6H 7H AD 2D 3D 4D 5C 6C 7C 8C 9S TS JS QS KH AS 1 1 1 1 1 1 21 AH 2H 3H 4H 5H 6H 7H AD 2D 3D 4D 5C 6C 7C 8C 9S TS JS QS KH AS 1 1 1 1 1 1 20 AH 2H 3H 4H 5H 6H 7H AD 2D 3D 4D 5C 6C 7C 8C 9S TS JS QS K...
output:
4 4 4 4 4
result:
ok 5 lines
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#755127 | #9549. The Magician | ucup-team191# | TL | 752ms | 46416kb | C++23 | 2.0kb | 2024-11-16 16:31:56 | 2024-11-20 19:18:49 |
answer
#include <bits/stdc++.h>
#define x first
#define y second
using namespace std;
using ll=long long;
using vi=vector<int>;
using vl=vector<ll>;
using pii=pair<int,int>;
#define pb push_back
#define all(a) begin(a),end(a)
const int N=300010,MOD=1e9+7;
const char en='\n';
const ll LLINF=1ll<<60;
int t,n;
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
cin>>t;
while (t--)
{
cin>>n;
vi cn(5);
for (int i=0;i<n;++i)
{
string ti;
cin>>ti;
if (ti[1]=='D') ++cn[0];
if (ti[1]=='C') ++cn[1];
if (ti[1]=='H') ++cn[2];
if (ti[1]=='S') ++cn[3];
}
vi ty(6);
for (auto&x: ty) cin>>x;
set<pair<vi,vi>> s;
queue<pair<vi,vi>> q;
q.push({cn,ty});
int an=0;
while (q.size())
{
vi cc=q.front().x,tt=q.front().y;
q.pop();
if (s.count({cc,tt})) continue;
s.insert({cc,tt});
int can=0;
int m4=0,m3=0;
for (auto x: cc) can+=x/5,m4+=(x%5==4),m3+=(x%5==3);
if (cc[4]==1)
{
if (m4) ++can;
}
if (cc[4]==2)
{
can+=max(min(m4,2),min(m3,1));
}
an=max(an,can);
for (int z=0;z<4;++z) if (tt[z])
{
--tt[z];
for (int i=0;i<4;++i) if (cc[i])
{
--cc[i];
++cc[z];
q.push({cc,tt});
--cc[z];
for (int j=i;j<4;++j) if (cc[j])
{
--cc[j];
cc[z]+=2;
q.push({cc,tt});
cc[z]-=2;
for (int k=j;k<4;++k) if (cc[k])
{
--cc[k];
cc[z]+=3;
q.push({cc,tt});
cc[z]-=3;
++cc[k];
}
++cc[j];
}
++cc[i];
}
++tt[z];
}
if (tt[4]) for (int i=0;i<4;++i) if (cc[i])
{
--tt[4];
--cc[i];
++cc[4];
q.push({cc,tt});
--cc[4];
++cc[i];
++tt[4];
}
if (tt[5])
{
--tt[5];
for (int i=0;i<4;++i) for (int j=0;j<5;++j) if (i!=j && cc[i] && cc[j])
{
--cc[i];
++cc[j];
q.push({cc,tt});
--cc[j];
++cc[i];
}
++tt[5];
}
}
cout<<an<<en;
}
}