bzoj 2287(背包dp)
来源:互联网 发布:房子平面设计软件手机 编辑:程序博客网 时间:2024/06/15 16:15
传送门
题解:
设f[i]为装满i的容量的方案数,可以按01背包的方法O(nm)预处理。
设g[i][j]表示不用i,装满j的容量的方案数。
对于每个i:
若i<v[j],则g[i][j]=f[j]
否则g[i][j]=f[j]-g[i][j-v[i]]
由于每个物品单独考虑互不影响,所以g数组可以去掉第一维。
P.S.听说可以用什么分治背包?以后再说。。。
#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using namespace std;const int MAXN=2004;int n,m;int v[MAXN],f[MAXN],g[MAXN];inline int read() {int x=0;char c=getchar();while (c<'0'||c>'9') c=getchar();while (c>='0'&&c<='9') x=x*10+c-'0',c=getchar();return x;}int main() {//freopen("bzoj 2287.in","r",stdin);f[0]=1;n=read(),m=read();for (int i=1;i<=n;++i) {v[i]=read();for (int j=m;j>=v[i];--j)f[j]=(f[j]+f[j-v[i]])%10;}for (int i=1;i<=n;++i) {for (int j=0;j<=m;++j) {if (j<v[i]) g[j]=f[j];else g[j]=(f[j]-g[j-v[i]]+10)%10;if (j) printf("%d",g[j]);}puts("");}return 0;}
阅读全文
0 0
- bzoj 2287(背包dp)
- bzoj 2287(背包dp)
- bzoj 4922(背包dp)
- bzoj 4033(树形dp)(背包dp)
- BZOJ 4247: 挂饰 背包dp
- bzoj 4247: 挂饰 背包dp
- BZOJ 2287: 【POJ Challenge】消失之物 背包dp
- BZOJ 2287【POJ Challenge】消失之物 背包DP
- BZOJ-2748 音量调节 DP+背包(脑残)
- bzoj 1042(容斥原理+背包dp)
- [BZOJ][HAOI2012][背包DP]音量调节
- [DP 背包] BZOJ 1190 [HNOI2007]梦幻岛宝珠
- BZOJ 2794: [Poi2012]Cloakroom 背包DP
- BZOJ 1190: [HNOI2007]梦幻岛宝珠 背包DP
- bzoj 1017: [JSOI2008]魔兽地图DotR (树形DP+多重背包)
- 01背包(DP)
- hdu2955 dp(背包)
- Coins(背包DP)
- Java课后作业
- 机器学习实战笔记——k近邻
- 卷积码译码之维特比译码算法(Viterbi decoding algorithm)
- C++矩阵求转置矩阵
- 条款12:复制对象时勿忘其每一个成分
- bzoj 2287(背包dp)
- effective java(20) 之类层次优于标签类
- SVM 核的理解
- 精致面板报警问题
- jdbc详解
- sort对结构体进行排序(区间排序)
- VLAN 虚拟局域网
- openstack mitaka glance 官方安装步骤
- CentOS 上安装 Apache Hadoop!