生成函数(背包)-HDU1171
来源:互联网 发布:铁血战士知乎 编辑:程序博客网 时间:2024/06/06 02:19
https://vjudge.net/contest/181055#problem/C
生成函数的解法要注意最后的判断,生成函数的用时更长。
背包是标准解法。
#include <iostream>#include <cstdio>#include <cstring>#include <cmath>#include <algorithm>#include <vector>#include <set>#include <queue>#define ll long longusing namespace std;const int maxn=1e5+10;const int mod=1000000007;int n2[55],a[1000010],b[1000010];int v[55];int main(){ int n; while(~scanf("%d",&n)) { if(n<0)break; for(int i=0;i<n;i++) scanf("%d %d",&v[i],&n2[i]); a[0]=1; int last=0,last2; for (int i=0; i<n; i++) { last2=last+n2[i]*v[i];//计算下一次的last memset(b,0,sizeof(int)*(last2+1));//只清空b[0..last2] for (int j=0; j<=n2[i]; j++) //这里是last2 for (int k=0; k<=last; k++) //这里一个是last,一个是last2 b[k+j*v[i]]+=a[k]; memcpy(a,b,sizeof(int)*(last2+1));//b赋值给a,只赋值0..last2 last=last2;//更新last } int i; for( i=last/2;i>=0&&a[i]==0; i--); printf("%d %d\n",last-i,i); } return 0;}
阅读全文
0 0
- 生成函数(背包)-HDU1171
- hdu1171(母函数或多重背包)
- hdu1171(多重背包)
- hdu1171(01背包变形)
- hdu1171(01背包问题)
- hdu1171 Big Event in HDU(生成函数)
- hdu1171 (单调队列优化多重背包)
- hdu1171多重背包
- hdu1171多重背包
- hdu1171(多重背包)
- hdu1171多重背包
- hdu1171 多重背包
- hdu1171(多重背包)
- HDU1171(01背包)
- hdu1171-01背包
- HDU1171--01背包
- hdu1171 01背包
- hdu1171 01背包
- Redis源码剖析-dict遍历算法
- Android:30分钟弄明白Touch事件分发机制
- 英语口语-打电话
- Linux学习笔记(3)-VIM的使用
- CSU 1803:2016(数论)
- 生成函数(背包)-HDU1171
- Nosql--redis数据库
- 软件工程的设计流程
- Spring学习(十三)-事务准备
- 015讲EasyGui模块专座
- extern“C"
- Codeforces 798C:Mike and gcd problem【数论+贪心】
- POJ 1149 PIGS(网络流经典建图题)
- shua