hdoj 1709 The Balance(母函数)
2012-03-30 02:48
393 查看
【题目大意】:给出一些砝码,可以放在天秤的两边,问有[1,sum]中有哪些重量是不可称出来的
【解题思路】:母函数,这里比较特殊的一点是砝码可以放在天枰的左右两端,我们可以在c2[j+k]+=c1[j]后加多一句c2[abs(j-k)]+=c[j]...即可
假设原来的砝码都放在右端,则可以把新加的砝码放在左端,得到新重量。
【代码】:
【解题思路】:母函数,这里比较特殊的一点是砝码可以放在天枰的左右两端,我们可以在c2[j+k]+=c1[j]后加多一句c2[abs(j-k)]+=c[j]...即可
假设原来的砝码都放在右端,则可以把新加的砝码放在左端,得到新重量。
【代码】:
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #include <vector> #include <queue> #include <cmath> #include <string> #include <cctype> #include <map> #include <iomanip> using namespace std; #define eps 1e-8 #define pi acos(-1.0) #define inf 1<<30 #define linf 1LL<<60 #define pb push_back #define lc(x) (x << 1) #define rc(x) (x << 1 | 1) #define lowbit(x) (x & (-x)) #define ll long long int n; int c1[10100],c2[10100]; int a[110]; int main() { while (~scanf("%d",&n)){ int sum=0; for (int i=0; i<n; i++){ scanf("%d",&a[i]); sum+=a[i]; } memset(c1,0,sizeof(c1)); memset(c2,0,sizeof(c2)); for (int i=0; i<=a[0]; i+=a[0]) c1[i]=1; int now=a[0]; for (int i=1; i<n; i++){ for (int j=0; j<=now; j++){ for (int k=0; k<=a[i]; k+=a[i]){ c2[j+k]+=c1[j]; c2[abs(j-k)]+=c1[j]; } } now+=a[i]; for (int j=0; j<=now; j++) c1[j]=c2[j],c2[j]=0; } int cnt=0; int tmp[10100]; for (int i=1; i<=sum; i++){ if (c1[i]==0){ tmp[cnt]=i; cnt++; } } cout << cnt << endl; for (int i=0; i<cnt-1; i++) cout << tmp[i] << " "; if (cnt!=0) cout << tmp[cnt-1] << endl; } return 0; }
相关文章推荐
- HDOJ-1709 The Balance(母函数)
- hdoj 1709 The Balance(母函数)
- 【母函数初学】The Balance hdoj 1709
- HDOJ 题目1709 The Balance(母函数)
- HDoj-1709-The Balance-母函数
- 组合数学 - 母函数的运用 --- hdu 1709 :The Balance
- HDU-1709-The Balance 母函数
- HDU1709 The Balance,母函数套题
- hdu 1709 The Balance (母函数)
- HDU1709_HDU 1709 The Balance(母函数/生成函数)
- HDU 1709 The Balance【负次方母函数】
- 【HDOJ】1709 The Balance
- HDU 1709 The Balance(母函数)
- HDOJ 1709-The Balance【模拟】
- HDU - 1709 The Balance(母函数)
- hdu 1709 The Balance(母函数)
- HDU 1709 The Balance [母函数]
- HDU1709 The Balance【母函数】
- HDU 1709 The Balance (母函数)
- 【HDU 1709】【母函数】The Balance【给出n个砝码,以及n个砝码的重量,求出(1~sum)中(sum为各砝码总和)不能被称出的重量】