hdu3535 背包大杂汇
题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=3535
//不想写题解,这道题让我对背包的理解更深了,我相信我不会忘记的。。。。
代码:
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;
const int INF=0x3f3f3f3f; int dp[][];
int t[],g[]; int main()
{
int N,T;
while(scanf("%d%d",&N,&T)==)
{
memset(dp,,sizeof(dp));
for(int i=; i<=N; i++)
{
int n,s;
scanf("%d%d",&n,&s);
for(int k=; k<=n; k++)
scanf("%d%d",&t[k],&g[k]);
if(s==) ///至少选一件
{
for(int j=; j<=T; j++)
dp[i][j]=-INF;
for(int j=; j<=n; j++)
for(int k=T; k>=t[j]; k--)
dp[i][k]=max(dp[i][k],max(dp[i][k-t[j]]+g[j],dp[i-][k-t[j]]+g[j]));
}
else if(s==) ///最多选一件
{
for(int j=; j<=T; j++)
dp[i][j]=dp[i-][j];
for(int j=; j<=n; j++)
for(int k=T; k>=t[j]; k--)
dp[i][k]=max(dp[i][k],dp[i-][k-t[j]]+g[j]);
}
else ///随便选
{
for(int j=; j<=T; j++)
dp[i][j]=dp[i-][j];
for(int j=; j<=n; j++)
for(int k=T; k>=t[j]; k--)
dp[i][k]=max(dp[i][k],max(dp[i-][k-t[j]]+g[j],dp[i][k-t[j]]+g[j]));
}
}
if(dp[N][T]<=) dp[N][T]=-;
printf("%d\n",dp[N][T]);
}
return ;
}
hdu3535 背包大杂汇的更多相关文章
- jQuery知识大杂汇
1.jQuery 语法是通过选取 HTML 元素,并对选取的元素执行某些操作. 基础语法: $(selector).action() 举几枚栗子吧: $(this).hide() - 隐藏当前元素 $ ...
- [整理]qbxt集训10场考试 大 杂 烩 (前篇)
Contest 1 A 计算 \(n!\mod 2^{32}\) .发现数一大答案就为 \(0\) ,直接输出即可. B 一个 \(n\times m\) 的网格,网格中的数都在 \([1,nm]\) ...
- [整理]qbxt集训10场考试 大 杂 烩 (后篇)
前篇 Contest 6 A 两个数,第 \(i\) 轮从较大数(如果相等就是第一个)里减去 \(i\) ,问操作不能进行时两数分别为多少. 首先把大数减到和小数差不多,然后我们会发现接下来两数会轮流 ...
- HDU 5754 Life Winner Bo(各类博弈大杂合)
http://acm.hdu.edu.cn/showproblem.php?pid=5754 题意: 给一个国际象棋的棋盘,起点为(1,1),终点为(n,m),现在每个棋子只能往右下方走,并且有4种不 ...
- python大杂铺
python中continue,break,return三者之间的区别 return 会直接令函数返回,所有该函数体内的代码都不再执行了,所以该函数体内的循环也不可能再继续运行. break:跳出 ...
- hdu–2369 Bone Collector II(01背包变形题)
题意:求解01背包价值的第K优解. 分析: 基本思想是将每个状态都表示成有序队列,将状态转移方程中的max/min转化成有序队列的合并. 首先看01背包求最优解的状态转移方程:\[dp\left[ j ...
- 关于01背包求第k优解
引用:http://szy961124.blog.163.com/blog/static/132346674201092775320970/ 求次优解.第K优解 对于求次优解.第K优解类的问题,如果相 ...
- HDU 2639 骨头收集者 II【01背包 】+【第K优决策】
题目链接:https://vjudge.net/contest/103424#problem/H 题目大意:与01背包模板题类似,只不过要我们求第K个最大的总价值. 解题分析: 其基本思想是将每个状态 ...
- HDU 1059 Dividing 分配(多重背包,母函数)
题意: 两个人共同收藏了一些石头,现在要分道扬镳,得分资产了,石头具有不同的收藏价值,分别为1.2.3.4.5.6共6个价钱.问:是否能公平分配? 输入: 每行为一个测试例子,每行包括6个数字,分别对 ...
随机推荐
- Mathematics:DNA Sorting(POJ 1007)
DNA排序 题目大意:给定多个ACGT序列,按照字母顺序算出逆序数,按逆序数从小到大排列 这题其实很简单,我们只要用一个归并排序算逆序数,然后快排就可以了(插入排序也可以,数据量不大),但是要注意的是 ...
- codeforces 582A. GCD Table 解题报告
题目链接:http://codeforces.com/problemset/problem/582/A 网上很多题解,就不说了,直接贴代码= = 官方题解: http://codeforces.com ...
- 【EM】代码理解
本来想自己写一个EM算法的,但是操作没两步就进行不下去了.对那些数学公式着实不懂.只好从网上找找代码,看看别人是怎么做的. 代码:来自http://blog.sina.com.cn/s/blog_98 ...
- Rsync+lsync实现触发式实时同步
使用rsync+lsync实现触发式实时同步 服务器信息 centos6.5 主:192.168.5.4 搭建lsync 从:192.168.5.3 搭建rsync 1.1 从服务器设置 # yum ...
- UISrollView
1. contentOffset 默认CGPointZero,用来设置scrollView的滚动偏移量. // 设置scrollView的滚动偏移量 scrollView.contentOffset ...
- C# webBrowser控件使用
C# webBrowser控件使用心得 最近用到WebBrowser控件,遇到很多问题,也学习了不少新的东西.下面是我在C#下写的关于WebBrowser控件使用的代码. 1.WebBrowser常用 ...
- [Android Pro] 临时关闭selinux模式 setenforce 0
setenforce 0 设置SELinux 成为permissive模式 临时关闭selinux的
- Python--常见问题解决方案
1.如何支持中文,在第一行加上编码格式的支持: # coding=gbk +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ...
- 线段树(main函数自由)
都是一些裸线段树的模板,无主函数! #include<cstdio> #include<algorithm> #include<cstring> #include& ...
- hdu5878(枚举,打表)
题目链接:hdu5878 题意:到一行输入t,表示下面有t组数据,然后下面t行每行输入一个数n; 定义x==2^a*3^b*5^c*7^d(a, b, c, d为自然数,x不大于1e+9): 要求对于 ...