hdu 1171 母函数 和 DP
2012-05-12 22:31
363 查看
母函数:
DP: 0Ms哦
#include<iostream> #include<string.h> using namespace std; typedef struct { int v; int m; }P; int c1[250010],c2[250010]; int main() { int n; P a[110]; int sum; int avg; while (scanf("%d",&n)!=EOF&&n>0) { sum=0; for(int i=1;i<=n;i++) {scanf("%d%d",&a[i].v,&a[i].m); sum+=(a[i].v*a[i].m); } avg=sum/2; memset(c1,0,sum*sizeof(c1[0])); memset(c2,0,sum*sizeof(c2[0])); for(int i=0;i<=a[1].m*a[1].v;i+=a[1].v) { c1[i]=1; } int count=a[1].m*a[1].v; for(int i=2;i<=n;i++) { //count+=a[i-1].v*a[i-1].m; for(int j=0;j<=count;j++) { for(int k=0;k<=a[i].m*a[i].v;k+=a[i].v) { c2[j+k]+=c1[j]; } } count+=a[i].v*a[i].m; for(int j=0;j<=count;j++) // 此处的 count 值为这次计算完后最大的指数值 { c1[j]=c2[j]; c2[j]=0; } } for(int i=avg;i>=0;i--) { if(c1[i]!=0) { printf("%d %d\n",sum-i,i); break; } } } return 0; }
DP: 0Ms哦
相关文章推荐
- hdu 1171 Big Event in HDU(dp 01背包 母函数)
- HDU 1171 Big Event in HDU(母函数||DP)
- 【HDU 1171】【背包DP 或者 母函数】Big Event in HDU【有n样物品,每样物品价值是v,件数是m。尽量把这些物品分成两堆使得两边总价值最接近】
- HDU1171 Big Event in HDU,母函数,终极模板
- hdu 1171 母函数板子
- HDU 1171 Big Event in HDU 杭电大事件(母函数,有限物品)
- hdu 1171(Big Event in HDU) (dp)
- hdu 1171 母函数
- hdu--1028--dp||递推||母函数
- hdu 1171 母函数板子
- HDU 1028 Ignatius and the Princess III(母函数或dp)
- hdu 1171 母函数板子
- hdu 1171 母函数 之 再次探索
- [母函数]HDU 1171 Big Event in HDU
- hdu 1171 Big Event in HDU(母函数)
- HDU 1171 Big Event in HDU [母函数]
- hdu 1171 母函数板子
- HDU_1028_Ignatius and the Princess III_(母函数,dp)
- hdu 1171 Big Event in HDU(母函数|多重背包)
- hdu 1028 Ignatius and the Princess III 整数拆分 母函数/dp