!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]).考虑当前这 ...
随机推荐
- JS高级 - 面向对象4(json方式面向对象)
把方法包在一个Json里 var p1 = { name: "唐三", sex: "男", dreamdu: { URL: "www.dreamdu. ...
- [转] JavaScript:彻底理解同步、异步和事件循环(Event Loop)
一. 单线程 我们常说“JavaScript是单线程的”. 所谓单线程,是指在JS引擎中负责解释和执行JavaScript代码的线程只有一个.不妨叫它主线程. 但是实际上还存在其他的线程.例如:处理A ...
- Android Studio代码调试大全
http://blog.csdn.net/dd864140130/article/details/51560664 Android Studio目前已经成为开发android的主要工具,用熟了可谓相当 ...
- 066 linux下时间的修改
1.关于时间的修改,在linux还是很重要的,在这里只是介绍一个简单的常用的命令,并且时间不会写入到系统. 2.命令 3.如果想把时间写进系统 修改完成之后,输入clock -w 时间将会被写进CMO ...
- Faster RCNN 学习与实现
论文 论文翻译 Faster R-CNN 主要分为两个部分: RPN(Region Proposal Network)生成高质量的 region proposal: Fast R-CNN 利用 reg ...
- git根据用户过滤提交记录
使用SourceTree 使用gitk
- 基于tensorflow搭建一个神经网络
一,tensorflow的简介 Tensorflow是一个采用数据流图,用于数值计算的 开源软件库.节点在图中表示数字操作,图中的线 则表示在节点间相互联系的多维数据数组,即张量 它灵活的架构让你可以 ...
- 11,EasyNetQ-调度事件与定时发布
许多业务流程都要求将事件安排在未来的某个日期. 例如,在与客户进行初次销售联系之后,我们可能希望在将来某个时间安排后续电话. EasyNetQ可以通过其未来发布功能帮助您实现此功能. 例如,我们在这里 ...
- Android-认识Bitmap
Android-认识Bitmap 学习自 Android开发艺术探索 例行废话 在Android的各种APP中都被离不开各种各样的图片,有的图片很大,有的图片很小不管这样图片都是一种很吃内存的资源,而 ...
- dns 监控系统 设计 dns安全威胁的可视化。
基于DNS大数据分析实现宽带共享监控系统.实现对宽带用户进行有效管理. 本系统基于DNS大数据分析实现宽带共享监控系统,包括以下方面. 1)数据采集:数据采集过程是通过探针采集的方式,从各地市的DNS ...