一开始难以理解题意。。
//最多只有三次比赛
//在同一次比赛中出现过的两个账号不能给同一个人
//k=1, ans=m;
//k=2,ans=
//k=3,
//(1)如果某账号在三次比赛中都出现,这个账号分配给一个人
//(2)如果某账号在两次比赛中出现,这个账号可以和只在另一场
//比赛中出现的账号共同分配给一个人
//(3)如果某账号只在一次比赛中出现,这个账号可以和没有在
//该次比赛中的其他账号共同分配给某人
int tag[MAXN];// 某个账号的分配格式
int v[11];
void solve()
{
int n,k;cin>>n>>k;
rep(i,k)
{
int m;cin>>m;
rpp(j,m)
{
int x;cin>>x;
tag[x]|=(1<<i);
}
}
rpp(i,n) ++v[tag[i]];
//1 2 4
int ans=v[7];//111
//110 与 001 //110
if(v[3]<=v[4]) ans+=v[3],v[4]-=v[3];
else ans+=v[3],v[4]=0;
//101 与 010 //101
if(v[5]<=v[2]) ans+=v[5],v[2]-=v[5];
else ans+=v[5],v[2]=0;
//011 与 100 //011
if(v[6]<=v[1]) ans+=v[6],v[1]-=v[6];
else ans+=v[6],v[1]=0;
//001 010 100
ans+=max(v[1],max(v[2],v[4]));
cout<<ans<<endl;
}