poj 1014 dividing (母函数)
来源:互联网 发布:最全双色球历史数据库 编辑:程序博客网 时间:2024/05/17 06:46
题意:每一行输入的6个数,第i个数表示价值为i的珠宝的个数,问这些珠宝是不是能等价平分给两个人。
方法:就是组合数学中的母函数,不会的去学下就会了(可以尝试下hdu1028,比这题简单些),这题的难点在于题目中说每种珠宝的数量最多有20000个,如果不进行一些优化是会超时的,优化的方法就是当每种珠宝的个数n>=8是,可以令n=11(n为奇数)or =12(n为偶数),然后就OK了。还有一个坑就是每个案例要输出一个空行
AC代码:
#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#include<cmath>#include<algorithm>#include<queue>#include<set>#include<vector>#include<stack>#include<map>using namespace std;typedef long long ll;const int maxn=150005;int main(){ int t,i,j,k,ans,y,n,kase,sum; int a[maxn],x[maxn],b[maxn]; //cin>>t; for(kase=1;;kase++) { sum=0; for(i=1;i<=6;i++) { cin>>x[i]; if(x[i]>=8) { if(x[i]%2==0) { x[i]=12; } else { x[i]=11; } } sum+=i*x[i]; } if(sum==0) { break; } printf("Collection #%d:\n",kase); if(sum%2!=0) { cout<<"Can't be divided."<<endl; cout<<endl; continue; } n=sum/2; memset(a,0,sizeof(a)); a[0]=1; for(i=1;i<=6;i++) { if(x[i]==0) { continue; } memset(b,0,sizeof(b)); for(j=0;j<=x[i];j++) { for(k=0;(k+j*i)<=n;k++) { b[k+j*i]+=a[k]; } } for(k=0;k<=n;k++) { a[k]=b[k]; } if(a[n]!=0) { break; } /* for(j=0;j<=10;j++) { cout<<a[j]<<" "; } cout<<endl; cout<<a[n]<<endl;*/ } if(a[n]==0) { cout<<"Can't be divided."<<endl; } else { cout<<"Can be divided."<<endl; } cout<<endl; } return 0;}
0 0
- poj 1014 dividing (母函数)
- 母函数:poj 1014 Dividing
- POJ 1014 Dividing(DFS、完全背包、母函数)
- poj 1014 Dividing(多重背包/母函数)
- POJ 1014 Dividing (母函数优化)
- POJ 1014 Dividing (多重背包)
- POJ 1014 Dividing ( 多重背包)
- poj - 1014 - Dividing(多重背包)
- poj 1014 Dividing(多重背包)
- poj 1014 Dividing (多重背包模板)
- POJ 1014 Dividing(多重背包)
- poj 1014 Dividing (搜索:DFS)
- poj 1014 Dividing(简单dp)
- POJ 1014 Dividing(简单dp)
- 【POJ】 1014 Dividing(多重背包,优化)
- POJ 1014 Dividing
- POJ 1014 Dividing
- poj 1014 Dividing
- 在tableau server 上自定义报表
- Spark First Sample Demo
- iOS-NSDate 相差 8 小时
- C++重载运算符
- Android Studio中的Button英文文本全部显示为大写的解决方法
- poj 1014 dividing (母函数)
- android 版本号 对应的版本名称
- jq ajax 传递数据
- test命令
- matlab bwlabel
- WEB前端解决浏览器兼容性问题
- nyist 737 石子合并(一)(区间dp)
- tableview 默认选中一行
- burpsuite扩展开发之Python