记录编号 408578 评测结果 AAAAAAAAAAAAAAAAAAAA
题目名称 [APIO 2007]动物园 最终得分 100
用户昵称 GravatarTroywar 是否通过 通过
代码语言 C++ 运行时间 0.173 s
提交时间 2017-05-25 08:01:06 内存使用 2.35 MiB
显示代码纯文本
#include<cstdio>
#include<cstring>
using namespace std;
const int N=10100;
inline int max(int a,int b){return a>b?a:b;}
int n,c;
int f[N][1<<6];
int gts[N][1<<6];
inline int read(){
	int s=0,k=1;
	char ch=getchar();
	while(ch<'0'||ch>'9')k=ch=='-'?-1:1,ch=getchar();
	while(ch>='0'&&ch<='9')	s=(s<<3)+(s<<1)+ch-48,ch=getchar();
	return s*k;
}
int Main(){
	freopen("apio_zoo.in","r",stdin);
	freopen("apio_zoo.out","w",stdout);
	n=read(),c=read();
	int m;
	int E;
	int F,L;
	int fear,like;
	for(int i=1;i<=c;i++){
		fear=like=0;
		E=read(),F=read(),L=read();
		for(int j=1;j<=F;j++){
			m=read();
			fear|=1<<((m+n-E)%n);
		}
		for(int j=1;j<=L;j++)
			like|=1<<((read()+n-E)%n);
		for(int j=0;j<1<<5;j++)
		{
			bool have=0;
			if((~j)&fear){
				gts[E][j]++;
				have=true;
			}
			if(have)	continue;
			if(j&like)
				gts[E][j]++;
		}
	}
	
	int ans=0;
	for(int t=0;t<1<<4;t++){		
		memset(f,128,sizeof(f));
		f[0][t<<1]=0;	
		for(int k=1;k<=n-4;k++){
			for(int j=0;j<1<<5;j++){
				int l=j<<1;
				if(l&(1<<5))	l-=1<<5;	
				f[k][j]=max(f[k-1][l],f[k-1][l|1])+gts[k][j];
			}
		}
		int r=0;
		for(int i=0,k=n-3;k<=n;i++,k++){
			r+=t&(1<<i);
			for(int j=0;j<1<<5;j++)
				if((j>>n-k+1)==r){
					int l=j<<1;
					if(l&(1<<5))	l-=1<<5;
					f[k][j]=max(f[k-1][l],f[k-1][l|1])+gts[k][j];
					ans=max(ans,f[k][j]);
				}
		}
	}

	printf("%d",ans);
///	while(1);
	return 0;
}
int dawibwa=Main();
int main(){
	;return 0;
}