hdu 3016 Man Down
题意:给你n个板子,初始100生命,到达每个板子加血或者扣血,求从最上面的板子落到地面的最优解
题解:对于每一个木板,只有从左下或者从右下,所以从下往上来看,到达第n个木板的最优解为 dp[n] = max(dp[l],dp[r]) + value[n]
l 和 r 为n的左右端点下方的木板序号,然后,维护一个线段树,当一个木板计算完毕后,维护木板左端点到木板右端点的叶子节点的值为木板的序号(把下方的木板或者地板都盖住了!!)
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#define CLR(a,b) memset(a,b,sizeof(a))
using namespace std;
#define maxn 100010
int tree[maxn<<2];
int dp[maxn];struct Node
{int l,r,h,val;
}node[maxn];bool cmp(Node a,Node b)
{return a.h < b.h;
}void PushUp(int rt)
{;
}void Build(int l,int r,int rt)
{
// cout<<l<<" "<<r<<endl;tree[rt] = 0;if( r == l ){return ;}int m = (r+l)>>1;Build(l,m,rt<<1);Build(m+1,r,rt<<1|1);PushUp(rt);
}void PushDown(int rt)
{if(tree[rt]){tree[rt<<1] = tree[rt];tree[rt<<1|1] = tree[rt];}tree[rt] = 0;
}void Update(int L,int R,int c,int l,int r,int rt)
{if( l >= L && r <= R ){tree[rt] = c;return ;}int m = (r+l)>>1;PushDown(rt);if(L<=m) Update(L,R,c,l,m,rt<<1);if(R>m) Update(L,R,c,m+1,r,rt<<1|1);PushUp(rt);
}int Query(int L,int l,int r,int rt)
{if( l == L && r == L){return tree[rt];}int m = (r+l)>>1;PushDown(rt);if(L<=m) return Query(L,l,m,rt<<1);if(L> m) return Query(L,m+1,r,rt<<1|1);
}int main()
{int n;
// freopen("in.txt","r",stdin);while(scanf("%d",&n)!=EOF){Build(1,maxn,1);CLR(dp,0);for(int i=1;i<=n;i++)scanf("%d%d%d%d",&node[i].h,&node[i].l,&node[i].r,&node[i].val);sort(node+1,node+1+n,cmp);for(int i=1;i<=n;i++){int l = Query(node[i].l,1,maxn,1);int r = Query(node[i].r,1,maxn,1);dp[i] = max(dp[l],dp[r]) + node[i].val;Update(node[i].l,node[i].r,i,1,maxn,1);}dp[n]+=100;if(dp[n]<=0)printf("-1\n");elseprintf("%d\n",dp[n]);}return 0;
}
转载于:https://www.cnblogs.com/Tokisaki-Kurumi-/p/8669978.html
hdu 3016 Man Down相关推荐
- HDU 3016 Man Down (线段树+dp)
HDU 3016 Man Down (线段树+dp) Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Ja ...
- hdu 3016 Man Down(简单线段树简单DP)
Man Down Time Limit: 2000/1000 MS (Java/Others)Memory Limit: 32768/32768 K (Java/Others) Total Submi ...
- HDU 3016 Man Down——线段树
传送门 Problem Description The Game "Man Down 100 floors" is an famous and interesting game.Y ...
- HDU ACM Steps 攻略
HDU ACM Steps 攻略- Admin 2011年10月14日 名人名言:未来是光明而美丽的,爱它吧,向它突进,为它工作,迎接它,尽可能地使它成为现实吧!--车尔尼雪夫斯基 总结了一下ACM ...
- HDU——1106排序(istringstream的使用、STLvector练习)
排序 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submiss ...
- hdu 5438 Ponds 拓扑排序
Ponds Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/contests/contest_showproblem ...
- HDU 1248 寒冰王座(全然背包:入门题)
HDU 1248 寒冰王座(全然背包:入门题) http://acm.hdu.edu.cn/showproblem.php?pid=1248 题意: 不死族的巫妖王发工资拉,死亡骑士拿到一张N元的钞票 ...
- hdu 1312 Red and Black 解题报告
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1312 第二条深搜,题目并不难,但是做了我好久好久,由于一个细节,让我赌上了一个晚上的时间. 题目大意: ...
- HDU 1429 胜利大逃亡(续) (BFS+位压缩)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1429 胜利大逃亡(续) Time Limit: 4000/2000 MS (Java/Others) ...
最新文章
- R语言统计代码运行耗时实战:计算代码运行时间、使用proc.time函数计算代码运行时间
- 图灵4月精彩新书预告
- 征战蓝桥 —— 2018年第九届 —— C/C++B组第1题——第几天
- localtime与localtime_r
- html文字向上移动10px,HTML文字移动特效代码
- 第七节:ES6为数值做了哪些扩展?
- 利用 Python 写一个颜值测试小工具
- docker compose详解
- 数据库联结使用及分类
- 计算机网络考试卷2014B答案,计算机网络考试卷2014B
- 如何在阿里云里申请并使用免费https证书SSL、nginx下配置https证书
- 2021新款外卖返利系统源码,美团/饿了么返利三级分销源码外卖返利源码下载
- Tomcat优化大全,进来看了,真就会了
- 服务器dump文件位置,使用windbg分析服务器的DUMP文件
- JAVA设计模式-11-代理模式(动态)(一)
- 从西直门立交桥谈IT架构与重构(干货)
- pyltp的初始化报错:segmentor = Segmentor() # 初始化实例TypeError: __init__(): incompatible constructor argument
- Pytorch优化器Optimizer
- 从一个CFS调度案例谈Linux系统卡顿的根源
- 机器学习中的MR和MRR
热门文章
- linux查看文件使用情况,linux查看文件句柄使用情况
- Python第三方库的安装,升级以及版本查看
- 东北电力大学计算机专业几本,东北电力大学是几本?东北电力大学怎么样?
- 【技术解决方案】开发工具源码安装包大全
- mysql如何让表建立连接吗_MySQL 表与表之间建立关系
- 轨道运营管理专业自荐书_轨道运营管理专业自荐信x
- 初学者宝典:C语言入门基础知识大全(中)
- 为全局变量赋值_实例分析如何远离漫天飞舞的全局变量
- php能打开.shp文件吗,shp文件是什么格式的
- kotlin自定义View出现 java.lang.ClassNotFoundException