2 条题解
-
0
//Code By zzh 2023.10.8 #include<bits/stdc++.h> using namespace std; const int N=5e4+10,M=1<<5; int f[N][M],val[N][M]; int main() { int n,m; scanf("%d%d",&n,&m); for(int i=1;i<=m;i++) { int E,F,L,fear=0,like=0,x; scanf("%d%d%d",&E,&F,&L); for(int j=1;j<=F;j++) scanf("%d",&x),fear|=1<<((x-E+n)%n); for(int j=1;j<=L;j++) scanf("%d",&x),like|=1<<((x-E+n)%n); for(int j=0;j<(1<<5)-1;j++) if((fear&~j)||(like&j)) val[E][j]++; } int ans=0; for(int i=0;i<(1<<5)-1;i++) { memset(f[0],0xcf,sizeof(f[0])); f[0][i]=0; for(int j=1;j<=n;j++) for(int k=0;k<(1<<5)-1;k++) f[j][k]=max(f[j-1][(k&15)<<1],f[j-1][((k&15)<<1)|1])+val[j][k]; ans=max(ans,f[n][i]); } printf("%d\n",ans); return 0; } -
0
//Code By zzh 2023.10.8 #include<bits/stdc++.h> using namespace std; const int N=5e4+10,M=1<<5; int f[N][M],val[N][M]; int main() { int n,m; scanf("%d%d",&n,&m); for(int i=1;i<=m;i++) { int E,F,L,fear=0,like=0,x; scanf("%d%d%d",&E,&F,&L); for(int j=1;j<=F;j++) scanf("%d",&x),fear|=1<<((x-E+n)%n); for(int j=1;j<=L;j++) scanf("%d",&x),like|=1<<((x-E+n)%n); for(int j=0;j<=(1<<5)-1;j++) if((fear&~j)||(like&j)) val[E][j]++; } int ans=0; for(int i=0;i<=(1<<5)-1;i++) { memset(f[0],0xcf,sizeof(f[0])); f[0][i]=0; for(int j=1;j<=n;j++) for(int k=0;k<=(1<<5)-1;k++) f[j][k]=max(f[j-1][(k&15)<<1],f[j-1][((k&15)<<1)|1])+val[j][k]; ans=max(ans,f[n][i]); } printf("%d\n",ans); return 0; }
- 1
信息
- ID
- 2804
- 时间
- 1000ms
- 内存
- 125MiB
- 难度
- 7
- 标签
- 递交数
- 19
- 已通过
- 9
- 上传者