记录编号 408577 评测结果 AAAAAAAAAAAAAAAAAAAA
题目名称 2024.[APIO 2007]动物园 最终得分 100
用户昵称 Troywar 是否通过 通过
代码语言 C++ 运行时间 0.244 s
提交时间 2017-05-25 07:56:28 内存使用 2.87 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[6],like[6];
	for(int i=1;i<=c;i++){
		E=read(),F=read(),L=read();
		for(int j=1;j<=F;j++)
			*(fear+j)=read();
		for(int j=1;j<=L;j++)
			*(like+j)=read();
		for(int j=0;j<1<<5;j++)
		{
			bool have=0;
			for(int t=1;t<=F;t++)
			{
				int v=(fear[t]+n-E)%n;
				if((~j)&(1<<v)){
					gts[E][j]++,have=true;
					break;
				}
			}
			if(have)	continue;
			for(int t=1;t<=L;t++){
				int v=(like[t]+n-E)%n;
				if(j&(1<<v)){
					gts[E][j]++;
					break;
				}
			}
		}
	}
	
	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;
}