#include<cstdio>#include<cctype>#include<algorithm>#include<cstring>#define rr registerusingnamespace std;struct rec{int x,y,z;booloperator<(const rec &t)const{return x>t.x||(x==t.x&&(z<t.z||(z==t.z&&y<t.y)));}}a[4096];char c,s[200001];inlinevoidprint(int ans){if(ans>9)print(ans/10);putchar(ans%10+48);}inlinevoidprin(int x,int y){if(x)prin(x>>1,y-1),putchar(48+(x&1));elsewhile(y>0)putchar(48),--y;}intmain(){
rr int A,B,n,m=0,cnt=0;scanf("%d%d%d",&A,&B,&n);while((c=getchar())!=EOF)if(isdigit(c)) s[++m]=c;
B=B>m?m:B;for(rr int i=1,k=0;i<=B;++i){
k=k<<1|(s[i]^48);if(i>=A){
rr int t=(1<<i)-1,v[4096];memset(v,0,sizeof(v));
v[k]=1; rr int k1=k;for(rr int j=i+1;j<=m;++j)++v[k1=(k1<<1|(s[j]^48))&t];for(rr int j=0;j<=t;++j)if(v[j]) a[++cnt]=(rec){v[j],j,i};}}sort(a+1,a+1+cnt);for(rr int i=1,j=1;i<=n&&j<=cnt;++i){print(a[j].x);putchar(10); rr int ente=1;while(a[j+1].x==a[j].x){prin(a[j].y,a[j].z);if(ente==6)putchar(10),ente=0;elseputchar(32);++j,++ente;}prin(a[j].y,a[j].z);++j;if(ente)putchar(10);}return0;}
洛谷 2725 邮票 Stamps
代码(完全背包)
/*
ID:lemondi1
LANG:C++
TASK:stamps
*/#include<cstdio>#include<cctype>#include<algorithm>#define rr register#define min(a,b) ((a)<(b))?(a):(b)usingnamespace std;inlinesignediut(){
rr int ans=0; rr char c=getchar();while(!isdigit(c)) c=getchar();while(isdigit(c)) ans=(ans<<3)+(ans<<1)+(c^48),c=getchar();return ans;}int f[2000001],k=iut(),x;intmain(){//freopen("stamps.in","r",stdin);//freopen("stamps.out","w",stdout);fill(f+1,f+1+2000000,20000);for(rr int n=iut();n;--n){
x=iut();for(rr int j=x;j<2000001;++j)if(f[j-x]<k) f[j]=min(f[j],f[j-x]+1);}for(rr int i=1;i<2000001;++i)if(f[i]>k)return!printf("%d\n",i-1);}