【bzoj2287】【POJ Challenge】消失之物
来源:互联网 发布:ge家电 知乎 编辑:程序博客网 时间:2024/06/05 01:07
题目
O(n*m)的背包可以求出用所有物品达到i容量的方案数,
我们可以考虑从其中减掉每种物品的方案得到答案。
由原来的方程f[i]+=f[j](j=i-v[i]) 此时的f[j]未用i物品更新过。
我们从前向后减去每个f[i]对应的f[j],在枚举到i时对应的j已经不包含第i个物品,
直接减掉就可以了。
代码:
#include<cstdio> #define maxn 2010 using namespace std; int n,m,f[maxn],g[maxn],w[maxn]; int main(){ scanf("%d%d",&n,&m); for(int i=1;i<=n;i++){ scanf("%d",&w[i]); } f[0]=1; for(int i=1;i<=n;i++){ for(int j=m;j>=w[i];j--){ f[j]+=f[j-w[i]]; if(f[j]>=10) f[j]-=10; } } for(int i=1;i<=n;i++){ for(int j=0;j<=m;j++) g[j]=f[j]; for(int j=w[i];j<=m;j++){ g[j]-=g[j-w[i]]; g[j]=(g[j]%10+10)%10; } for(int j=1;j<=m;j++) printf("%d",g[j]); puts(""); } return 0;}
1 0
- bzoj2287【POJ Challenge】消失之物
- 【bzoj2287】【POJ Challenge】消失之物
- BZOJ2287: 【POJ Challenge】消失之物
- bzoj2287【POJ Challenge】消失之物
- BZOJ2287 [POJ Challenge]消失之物
- [bzoj2287]【POJ Challenge】消失之物 背包DP
- bzoj2287【POJ Challenge】消失之物 背包dp
- 【BZOJ2287】【POJ Challenge】消失之物(DP,背包)
- bzoj2287【POJ Challenge】消失之物 ( 背包DP+补集转化 )
- bzoj2287 [POJ Challeng]消失之物(01背包)
- 【bzoj2287】 消失之物 背包dp+dp
- BZOJ 2287: 【POJ Challenge】消失之物
- 2287: [POJ Challenge]消失之物 DP
- [BZOJ 2287][POJ Challenge]消失之物
- BZOJ 2287 【POJ Challenge】消失之物
- BZOJ 2287: 【POJ Challenge】消失之物
- 旧题再做【bzoj2287】【[pojchallenge]消失之物】分治背包
- 【BZOJ2287】【POJChallenge】消失之物(权限题)
- C# 字典 Dictionary 遍历
- jQuery获取单选按钮(Radio)当前选中项的值
- Missing Number
- OkHttp使用(一)基本使用
- c /c++中日期和时间的获取:strftime()函数
- 【bzoj2287】【POJ Challenge】消失之物
- leetcode题解日练--2016.6.21
- Java操作MongoDB增删改查工具Demo
- 人生
- RxJava 笔记-1
- Retrofit 使用
- 数字按位倒转
- 工作小技巧-git patch
- 用Table-Selector选出表单数据