01退背包——bzoj2287
退背包就是限制某一件物品不可取的方案数
先做出无限制的方案数,然后对于当前不可取的物品,dp2[j]表示不取改物品情况下,取得体积为j的方案数
有状态方程 dp2[j]=dp1[j]-dp2[j-w[i]] 即无限制下取到体积j的方案数 - 有限制下取得体积j-w[i]的方案数(还有w[i]的体积用来装第i件物品,即这种状态时必选i的方案数)
#include<bits/stdc++.h>
using namespace std;
#define maxn 2005
long long n,m,dp1[maxn],dp2[maxn],w[maxn];
int main(){
cin>>n>>m;
for(int i=;i<=n;i++)cin>>w[i];
dp1[]=;
for(int i=;i<=n;i++)
for(int j=m;j>=w[i];j--)
dp1[j]=(dp1[j]+dp1[j-w[i]])%; for(int i=;i<=n;i++){
memset(dp2,,sizeof dp2);
dp2[]=;
for(int j=;j<=m;j++)
if(j<w[i])dp2[j]=dp1[j];
else dp2[j]=(dp1[j]-dp2[j-w[i]]+)%;
for(int j=;j<=m;j++)
cout<<dp2[j]%;
puts("");
}
}
01退背包——bzoj2287的更多相关文章
- 01二重退背包+组合数学——cf1111d
退背包进阶,还是挺难想的 /* dp1[k]表示取到体积k的方案数 dp2[i][j][k]表示左侧必选ij的情况下,取到体积k的方案数 dp2[i][j][k]=dp1[k]-左侧不选ij的方案数 ...
- 【Codeforces1111D_CF1111D】Destroy the Colony(退背包_组合数学)
题目: Codeforces1111D 翻译: [已提交至洛谷CF1111D] 有一个恶棍的聚居地由几个排成一排的洞穴组成,每一个洞穴恰好住着一个恶棍. 每种聚居地的分配方案可以记作一个长为偶数的字符 ...
- BZOJ.2287.[POJ Challenge]消失之物(退背包)
BZOJ 洛谷 退背包.和原DP的递推一样,再减去一次递推就行了. f[i][j] = f[i-1][j-w[i]] + f[i-1][j] f[i-1][j] = f[i][j] - f[i-1][ ...
- Codeforces 1111D(退背包、排列组合)
要点 优质题解 因为只有某type坏人全部分布在同一撇时,才能一次消灭.所以题目安排完毕后一定是type(x)和type(y)占一半,其余占另一半. 实际情况只有52*52种,则预处理答案 枚举某两种 ...
- Codeforces1111D Destroy the Colony 退背包+组合数
Codeforces1111D 退背包+组合数 D. Destroy the Colony Description: There is a colony of villains with severa ...
- bzoj2287【POJ Challenge】消失之物(退背包)
2287: [POJ Challenge]消失之物 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 657 Solved: 382[Submit][S ...
- 树形DP(01组合背包The Ghost Blows Light HDU4276)
题意:有n个房间,之间用n-1条道路连接,每个房间都有一个定时炸弹,在T时间后会一起爆炸,第i个房间有pi价值的珠宝,经过每条道路都需要花费一定的时间,一个人从1房间开始 ,从n房间出去,保证再不炸死 ...
- Codeforces 1111D Destroy the Colony 退背包 (看题解)
第一次知道这种背包还能退的.... 我们用dp[ i ]表示选取若干个物品重量到达 i 的方案数. 如果我们g[ i ]表示不用第 x 个物品的, 然后选若干其他的物品到达 i 的方案数. if(i ...
- 5410 ACM 杭电 01+完全背包
题目:http://acm.hdu.edu.cn/showproblem.php?pid=5410 虽然是英文题目:但还是很好理解的.明显的背包问题 思路:如果你能想到把题目拆分成小问题,就会简单许多 ...
随机推荐
- 微信小程序分享功能的path路径
表示被微信小程序坑惨了 糟心的开始写,老板说先不上太复杂,就先显示了两个页面,然后开开心心的发布,测试了几遍,没啥问题呀.结果,一上上去,就被老板批了! 啥呀! 这分享怎么这个鬼样子!明明我看文档都是 ...
- java笔试常见的选择题
1.已知表达式int m[] = {0,1,2,3,4,5,6}; 下面那个表达式的值与数组的长度相等()A m.length()B. m.lengthC. m.length()+1D. m.leng ...
- Qt 【tableview+delegate list越界 ,删除了list,model上还有存在delegate】
bug如图所示: 模型是n*4 ,因为是越界了每次最后一行点击都会出现这样的 警告,在控制台显示以下,然后程序崩溃. ASSERT failure in Qlist<T>::operat ...
- SQL关于:警告: 聚合或其他 SET 操作消除了空值。
方法一: create table tb ( id int, num int ) insert into tb select 1,10 insert into tb select 1,20 inser ...
- jsp service bean
//在jsp中使用后台service中方法需要在jsp页面引入service bean 1 <%@page import="com..entity.Users"%> & ...
- 特种设备TSG 认证流程
特种设备许可,也叫安全注册(原为AZ安全注册认可),现为TS.国家为了防止和减少事故,保障人民群众生命和财产安全,促进经济发展而强制实施的安全监察.它的作用相当于欧盟的“CE”认证,但比“CE”认证更 ...
- C判断语句
C 判断 判断结构要求程序员指定一个或多个要评估或测试的条件,以及条件为真时要执行的语句(必需的)和条件为假时要执行的语句(可选的). C 语言把任何非零和非空的值假定为 true,把零或 null ...
- Android中的隐藏API和Internal包的使用之获取应用电量排行
今天老大安排一个任务叫我获取手机中应用耗电排行(时间是前天晚上7点到第二天早上10点),所以在网上各种搜索,没想到这种资料还是很多的,发现了一个主要的类:PowerProfile,但是可以的是,这个类 ...
- Android中attrs.xml文件的使用详解
$*********************************************************************************************$ 博主推荐 ...
- delphi 多线程编程
开始本应该是一篇洋洋洒洒的文字, 不过我还是提倡先做起来, 在尝试中去理解.先试试这个: procedure TForm1.Button1Click(Sender: TObject); var i: ...