!HDU 1574 RP-dp-(重点在状态确定)
题意:有n件事。每件事若发生有两种情况。添加RP为a,可是收益会降低c;降低R为a,收益会添加c。
每件事可以发生的前提是小于等于或者大于等于门限值b。求最大收益。
分析:这题我没找到状态,所以就不会了。
又陷入了固定思维,用每件事来作为状态,然后发现找不到转移方程。
应该用RP值来作为状态,状态转移就是从满足门限的RP区间的状态转移到当前状态。
dp[k]表示RP值为k时的最大收益,方程:dp[i]=max(dp[i+a]。dp[i]+c)。
这个方程是在一个循环里求的,循环是用来遍历满足门限的RP区间。所以还要定义变量l。r来标示区间。
另外,这题另一个要做的处理,RP可能为负值,数组下标不能为负,又由于最大的RP总和是10000。所以RP总体向右移10000。
代码:
#include<iostream>
#define INF 10000007
using namespace std;
int t,n,a,b,c;
int dp[20005];//由于总体移动了10000,也就是零点移动到了10000。所以数组大小为20000
int max(int i,int j)
{
return i>j?i:j;
}
int main()
{
cin>>t;
while(t--){
cin>>n;
for(int i=0;i<20006;i++) dp[i]=-INF;
dp[10000]=0;
int l=10000,r=10000;
while(n--){
cin>>a>>b>>c;
b+=10000;
if(a<0){
for(int i=b;i<=r;i++)
dp[i+a]=max(dp[i+a],dp[i]+c);
l+=a;
}
else{
for(int i=b;i>=l;i--)
dp[i+a]=max(dp[i+a],dp[i]+c);
r+=a;
}
}
int ans=-INF;
for(int i=l;i<=r;i++) ans=max(ans,dp[i]);
cout<<ans<<endl;
}
}
!HDU 1574 RP-dp-(重点在状态确定)的更多相关文章
- hdu 1574 RP问题 01背包的变形
hdu 1574 RP问题 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1574 分析:01背包的变形. RP可能为负,所以这里分两种情况处理一下就好 ...
- HDU 1574 RP问题 (dp)
题目链接 Problem Description 在人类社会中,任何个体都具有人品,人品有各种不同的形式,可以从一种形式转换为另一种形式,从一个个体传递给另一个个体,在转换和传递的过程中,人品不会消失 ...
- HDU 1574 RP问题
如果说难的话,难就难在对阶段的划分. 这又是一道对值域空间进行分段的题目. 因为rp有正有负,所以将整个数组向右平移10000个单位长度 l和r分别是rp可能的最小值 因为b是“门槛”,所以如果 发生 ...
- hdu 4057 AC自己主动机+状态压缩dp
http://acm.hdu.edu.cn/showproblem.php?pid=4057 Problem Description Dr. X is a biologist, who likes r ...
- hdu 4352 数位dp + 状态压缩
XHXJ's LIS Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total ...
- hdu 1565 方格取数(1) 状态压缩dp
方格取数(1) Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Su ...
- HDU 2829 区间DP & 前缀和优化 & 四边形不等式优化
HDU 2829 区间DP & 前缀和优化 & 四边形不等式优化 n个节点n-1条线性边,炸掉M条边也就是分为m+1个区间 问你各个区间的总策略值最少的炸法 就题目本身而言,中规中矩的 ...
- DP大作战—状态压缩dp
题目描述 阿姆斯特朗回旋加速式阿姆斯特朗炮是一种非常厉害的武器,这种武器可以毁灭自身同行同列两个单位范围内的所有其他单位(其实就是十字型),听起来比红警里面的法国巨炮可是厉害多了.现在,零崎要在地图上 ...
- HDU 4599 概率DP
先推出F(n)的公式: 设dp[i]为已经投出连续i个相同的点数平均还要都多少次才能到达目标状态. 则有递推式dp[i] = 1/6*(1+dp[i+1]) + 5/6*(1+dp[1]).考虑当前这 ...
随机推荐
- Hibrenate关系映射(一对一外键关联)
一.一对一(单向):使用外部索引将其中的一个类作为parent,相对应的一个就是子类,并且参照父 类的主键ID来生成数据库表.(比如:可以将husband中设置一个wife_id对应wife中的主键i ...
- RabbitMQ(三): exchange 的使用
1. Exchange(交换机) 生产者只能发送信息到交换机,交换机接收到生产者的信息,然后按照规则把它推送到对列中. 一方面是接收生产者的消息,另一方面是像队列推送消息. 匿名转发 "&q ...
- MVC4 下DropDownList使用方法(转)
与MVC3相比,差别很大: 表现形式一: public ActionResult Main() { List<SelectListItem> items = new List<Sel ...
- mongo 复制集命令
1.登录primary2.use admin >rs.add("new_node:port") 或 rs.add({"_id":4,"host& ...
- vtiger7新模块的创建和配置
vtiger出7.0了,以前的那些配置方法已经不管用了 下面是新的 模块创建及一些页面及功能配置的方法 下面介绍三个点 1.新建一个模块 2.实现单图片上传的功能 3.实现页面summary显示的功能 ...
- 使用Ztree新增角色和编辑角色回显
最近在项目中使用到了ztree,在回显时候费了点时间,特记录下来供下次参考. 1.新增角色使用ztree加载权限,由于权限不多,所以使用直接全部加载. 效果图: 具体涉及ztree代码: jsp中导入 ...
- mac和Linux的环境变量设置
摘抄自:http://hi.baidu.com/machao_pe/item/763d0ef12d32cd35fe3582db redhat和ubuntu中修改环境变量 2010-03-06 23:4 ...
- Android:contentDescription 不是无用
在写Android的XML布局文件时,在ImageView或ImageButton中经常会碰到一个提示: Missing contentDescription attribute on image. ...
- HDU - 1392 凸包求周长(模板题)【Andrew】
<题目链接> 题目大意: 给出一些点,让你求出将这些点全部围住需要的多长的绳子. Andrew算法 #include<iostream> #include<cstdio& ...
- CPU个数、CPU核心数、CPU线程数
CPU个数.CPU核心数.CPU线程数 我们在选购电脑的时候,CPU是一个需要考虑到核心因素,因为它决定了电脑的性能等级.CPU从早期的单核,发展到现在的双核,多核.CPU除了核心数之外,还有线程数之 ...