码迷,mamicode.com
首页 > 其他好文 > 详细

hdu 1709 The Balance(母函数)

时间:2015-02-02 00:42:13      阅读:143      评论:0      收藏:0      [点我收藏+]

标签:

题意:

有一个天平。有N个砝码。重量分别是A1...AN。

问重量【1..S】中有多少种重量是无法利用这个天平和这些砝码称出来的。

S是N个砝码的重量总和。

 

思路:

对于每一个砝码来说,有三种:不放,放左盘,放右盘。

额,,母函数和DP其实核心一样,,,,

看代码,,

 

代码:

int n;
int aa[105];
bool a[10005], b[10005];
int temp[10005];


int main(){

    while(scanf("%d",&n)!=EOF){
        int tot=0;
        rep(i,1,n){
            scanf("%d",&aa[i]);
            tot+=aa[i];
        }
        mem(a,false);
        mem(b,false);
        a[0]=true;

        rep(i,1,n){
            mem(b,false);
            rep(k,0,tot){
                if(a[k]==true){
                    b[k]=true;
                    if(k+aa[i]<=tot){
                        b[k+aa[i]]=true;
                    }
                    if(abs(k-aa[i])<=tot){
                        b[abs(k-aa[i])]=true;
                    }
                }
            }
            rep(k,0,tot) a[k]=b[k];
        }
        int ans=0;
        rep(i,0,tot){
            if(a[i]==false){
                temp[++ans]=i;
            }
        }
        printf("%d\n",ans);
        if(ans>0){
            printf("%d",temp[1]);
            rep(i,2,ans) printf(" %d",temp[i]); cout<<endl;
        }
    }

    return 0;
}

 

hdu 1709 The Balance(母函数)

标签:

原文地址:http://www.cnblogs.com/fish7/p/4266541.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!