实在是找不到错了,本人已经调了一上午了
目前只有这两个点WA,希望有大佬救我/kel
不知道为什么这题数据不让下载 导致我没法面向数据编程
我甚至不敢用大号交题了(
/*************************************************************************
> File Name: p3622.cpp
> Author: Typedef
> Mail: 1815979752@qq.com
> Created Time: 2021年07月07日 星期三 07时37分52秒
> Tags:
************************************************************************/
//这是 @typedef 的小号,可能会与大号提交重复代码,希望管理员手下留情 QAQ
#include<bits/stdc++.h>
#define INF 0x3f3f3f3f
using namespace std;
const int N=5e4+4,M=57,S1=(1<<4)-1;
int n,C,S=1<<5;
int f[N][M],g[N][M];
int main(){
scanf("%d%d",&n,&C);
for(int i=1;i<=C;i++){
int a,b,c,x,t1=0,t2=0;
scanf("%d%d%d",&a,&b,&c);
for(int j=1;j<=b;j++) scanf("%d",&x),x=(x-a+n)%n,t1|=1<<x;
for(int j=1;j<=c;j++) scanf("%d",&x),x=(x-a+n)%n,t2|=1<<x;
for(int j=0;j<S;j++) if((j&t1)||(~j&t2)) g[a][j]++;
}
int ans=0;
for(int j=0;j<=n;j++) f[0][j]=-INF;
for(int i=0;i<S;i++){
f[0][max(i-1,0)]=-INF;
f[0][i]=0;
for(int j=1;j<=n;j++)
for(int s=0;s<S;s++)
f[j][s]=max(f[j-1][(s&S1)<<1],f[j-1][(s&S1)<<1|1])+g[j][s];
if(ans<f[n][i]) ans=f[n][i];
}
printf("%d\n",ans);
return 0;
}