hdu5000 背包dp
题意可抽象为:N个包中每个包容量是T[i],每个包都拿一些,设拿出的总数为sum时的方案数为q,求max(q)
设dp[i][j]为拿了前i个包,共拿出了j物品时的方案数。那么
for i=1 to n
for j=0 to sum
for k=0 to t[i]
dp[i][j]+=dp[i-1][j-k]
但是注意这题中间过程就得取MOD,然而这题求的却是最大值取模而不是取模之后的最大值 【这俩并不一样
可以打表得知dp[N][sum{T[i]}/2]是最大值
#include <iostream>
#include<cstring>
#define MOD 1000000007
#define LL long long
using namespace std;
int N,T;
LL sum;
int t[];
int dp[][]; int main()
{
cin>>T;
while(T--)
{
memset(dp,,sizeof(dp));
sum=; cin>>N;
for(int i=;i<=N;i++)
{
cin>>t[i];
sum+=t[i];
} //cout<<sum<<endl;
sum=sum/;
//cout<<sum<<endl; for(int i=;i<=t[];i++)
dp[][i]=; for(int i=;i<=N;i++)
for(int j=;j<=sum;j++)
for(int k=;k<=t[i];k++)
if(j>=k)
{
//cout<<i%2<<" "<<(i-1)%2<<endl;
dp[i][j]+=dp[i-][j-k]; //dp[i][j]+=dp[i-1][j-k]
dp[i][j]=dp[i][j]%MOD;
} cout<<dp[N][sum]<<endl;
} return ;
}
hdu5000 背包dp的更多相关文章
- 背包dp整理
01背包 动态规划是一种高效的算法.在数学和计算机科学中,是一种将复杂问题的分成多个简单的小问题思想 ---- 分而治之.因此我们使用动态规划的时候,原问题必须是重叠的子问题.运用动态规划设计的算法比 ...
- hdu 5534 Partial Tree 背包DP
Partial Tree Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid= ...
- HDU 5501 The Highest Mark 背包dp
The Highest Mark Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?p ...
- Codeforces Codeforces Round #319 (Div. 2) B. Modulo Sum 背包dp
B. Modulo Sum Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/577/problem/ ...
- noj [1479] How many (01背包||DP||DFS)
http://ac.nbutoj.com/Problem/view.xhtml?id=1479 [1479] How many 时间限制: 1000 ms 内存限制: 65535 K 问题描述 The ...
- HDU 1011 树形背包(DP) Starship Troopers
题目链接: HDU 1011 树形背包(DP) Starship Troopers 题意: 地图中有一些房间, 每个房间有一定的bugs和得到brains的可能性值, 一个人带领m支军队从入口(房 ...
- BZOJ 1004: [HNOI2008]Cards( 置换群 + burnside引理 + 背包dp + 乘法逆元 )
题意保证了是一个置换群. 根据burnside引理, 答案为Σc(f) / (M+1). c(f)表示置换f的不动点数, 而题目限制了颜色的数量, 所以还得满足题目, 用背包dp来计算.dp(x,i, ...
- G - Surf Gym - 100819S -逆向背包DP
G - Surf Gym - 100819S 思路 :有点类似 逆向背包DP , 因为这些事件发生后是对后面的时间有影响. 所以,我们 进行逆向DP,具体 见代码实现. #include<bit ...
- 树形DP和状压DP和背包DP
树形DP和状压DP和背包DP 树形\(DP\)和状压\(DP\)虽然在\(NOIp\)中考的不多,但是仍然是一个比较常用的算法,因此学好这两个\(DP\)也是很重要的.而背包\(DP\)虽然以前考的次 ...
随机推荐
- TextInputLayout setError() setErrorEnable()
public void afterTextChanged(Editable s) { if (textInputLayout.getEditText().getText().toString().le ...
- jquery mobile开发中footer一直在底部的设置方法
现给出html中Body节点中的代码如下: 实现代码:data-position=”fixed” <div data-role="page" id="pageone ...
- linux中位置参数变量和预定义变量
位置参数变量 预定义变量
- openstack中的身份管理
原文:http://blog.csdn.net/xxfigo/article/details/8785748 原作者关于openstack的一系列文章http://blog.csdn.net/xxfi ...
- ASP.NET SignalR
何为ASP.NET SignalR,有什么用 ASP.NET SignalR是一个ASP.NET库,是为了实现实时web通信而创造的,能让服务器与客户端实现即时通信,而不需要服务器等待接收到客户端请求 ...
- phpqrcode 生成二维码
这个项目需要根据信息来自动生成二维码,到网上搜了下,发现php有生成二维码的类库phpqrcode,所以打算就用这个来生成二维码 从官网下载类库源码http://sourceforge.net/pro ...
- opencv_haar分类器的训练
本文为作者原创,未经允许不得转载:原文由作者发表在博客园: http://www.cnblogs.com/panxiaochun/p/5345412.html 因为工作的原因,本人需要用到分类器来检测 ...
- Oracle基本数据类型
一 字符串类型 字符串数据类型还可以依据存储空间分为固定长度类型(CHAR/NCHAR) 和可变长度类型(VARCHAR2/NVARCHAR2)两种. 所谓固定长度:是指虽然输入的字段值小于该字段的限 ...
- BZOJ 3531: [Sdoi2014]旅行 [树链剖分]
3531: [Sdoi2014]旅行 Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 1685 Solved: 751[Submit][Status] ...
- UVA&&POJ离散概率与数学期望入门练习[4]
POJ3869 Headshot 题意:给出左轮手枪的子弹序列,打了一枪没子弹,要使下一枪也没子弹概率最大应该rotate还是shoot 条件概率,|00|/(|00|+|01|)和|0|/n谁大的问 ...