1 条题解

  • 0
    @ 2023-10-1 16:56:10

    。。。。。

    #include<bits/stdc++.h>
    using namespace std;
    const int ll=1e6;
    int a[6];
    int f[ll];
    int v[1000];
    int main(){
    	while(1){
    		memset(f,0,sizeof(f));
    		int sum=0,cnt=0;		
    		for(int i=1;i<=6;i++){
    			cin>>a[i];
    			sum+=a[i]*i;	
    		}
    		if(!sum) break;
    		for(int i=1;i<=6;i++){
    			int k=a[i],c=1;
    			while(1){
    				if(k<c){
    					v[++cnt]=i*k;
    					break;
    				}
    				k-=c;
    				v[++cnt]=i*c;
    				c*=2;
    			}
    		}
    		f[0]=1;
    		for(int i=1;i<=cnt;i++)		
    			for(int j=sum;j>=v[i];j--)
    				f[j]|=f[j-v[i]];
    		if(sum&1) printf("Can't\n");
    		else{
    			if(f[sum/2])
    			printf("Can\n");
    			else printf("Can't\n");
    		}
    	}
    	return 0;
    }
    
    
    • 1

    信息

    ID
    228
    时间
    1000ms
    内存
    128MiB
    难度
    9
    标签
    递交数
    9
    已通过
    4
    上传者