zoukankan      html  css  js  c++  java
  • HDU1709

    /*
     * 好奇怪的母函数
     */
    #include<cstdio>
    #include<cstring>
    #include<cmath>
    #include<algorithm>
    using namespace std;
    #define max 100*100+10
    int c1[max],c2[max],a[max];

    int main(){
        int n;
        while(~scanf("%d",&n)){
            int sum=0;
            for(int i=0;i<n;i++){
                scanf("%d",&a[i]);
                sum+=a[i];
            }
            sort(a,a+n);
            for(int i=0;i<=sum;i++){
                c1[i]=c2[i]=0;
            }
            for(int i=0;i<=a[0];i+=a[0]){
                c1[i]=1;
            }
            for(int i=1;i<n;i++){
                for(int j=0;j<=sum;j++){
                    for(int k=0;k+j<=sum&&k<=a[i];k+=a[i]){
                        c2[k+j]+=c1[j];
                        c2[abs(k-j)]+=c1[j];//每个砝码都可以放在两边
                    }
                }
                for(int j=0;j<=sum;j++){
                    c1[j]=c2[j];
                    c2[j]=0;
                }
            }
            int cnt=0;
            for(int i=1;i<=sum;i++){
                if(!c1[i]){
                    cnt++;
                }
            }
            printf("%d ",cnt);
            if(cnt){
                int f=0;
                for(int i=1;i<=sum;i++){
                    if(!c1[i]){
                        if(f){
                            printf(" ");
                        }
                        printf("%d",i);
                        f=1;
                    }
                }
                puts("");
            }
        }
    }

  • 相关阅读:
    优化C/C++代码的小技巧
    闭包,看这一篇就够了——带你看透闭包的本质,百发百中
    7215:简单的整数划分问题
    常见问题最佳实践三:服务启动顺序
    JAVA 用分苹果来理解本题
    arcgis访问格式
    墨卡托投影
    C# 从DataTable中取值
    Base64编码的字符串与图片的转换 C#
    墨卡托投影实现
  • 原文地址:https://www.cnblogs.com/Stomach-ache/p/3703235.html
Copyright © 2011-2022 走看看