Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
34472 liuziming 【S】T1 C++ 运行超时 0 1000 MS 288 KB 1116 2024-11-10 12:41:41

Tests(0/10):


#include<bits/stdc++.h> using namespace std; int sum[(1<<(24))+10],n,m,k,ans[300100],num[300100]; int popcount(int x){ int cnt=0; while(x){ if(x&1){ cnt++; }x>>=1; }return cnt; } char s[300100][30]; int main(){ //freopen("set.in","r",stdin); //freopen("set.out","w",stdout); cin>>n>>m>>k; for(int i=1;i<=m;i++){ int nownum=0; for(int j=1;j<=n;j++){ char ch=0; while(ch!='0'&&ch!='1'){ ch=getchar(); }s[i][j]=ch-'0'; nownum=(nownum<<1)+ch-'0'; }sum[nownum]++; num[i]=nownum; //cout<<nownum<<'\n'; }for(int i=1;i<=m;i++){ ans[i]=n; }for(int i=1;i<(1<<n);i++){ int cnt=0; for(int j=1;j<=m;j++){ //int now=i&j; if(popcount(i&num[j])>=k){ cnt++; } }ans[cnt]=min(popcount(i),ans[cnt]); } for(int i=m-1;i>=1;i--){ ans[i]=min(ans[i],ans[i+1]); } for(int i=1;i<=m;i++){ cout<<ans[i]<<'\n'; } }


测评信息: