bzoj3174【TJOI2013】解救小矮人
3174: [Tjoi2013]解救小矮人
Time Limit: 1 Sec Memory Limit: 128 MB id=3174" style="color:blue; text-decoration:none">Discuss
Submit: 573 Solved: 293
[Submit][Status][
Description
一群小矮人掉进了一个非常深的陷阱里,因为太矮爬不上来,于是他们决定搭一个人梯。即:一个小矮人站在还有一小矮人的 肩膀上。知道最顶端的小矮人伸直胳膊能够碰到陷阱口。
对于每个小矮人,我们知道他从脚到肩膀的高度Ai,而且他的胳膊长度为Bi。陷阱深度为H。假设我 们利用矮人1,矮人2。矮人3,。。
。矮人k搭一个梯子,满足A1+A2+A3+....+Ak+Bk>=H,那么矮人k就能够离开陷阱逃跑了,一
旦一个矮人逃跑了,他就不能再搭人梯了。
我们希望尽可能多的小矮人逃跑, 问最多能够使多少个小矮人逃跑。
Input
Output
Sample Input
2
20 10
5 5
30
例子2
2
20 10
5 5
35
Sample Output
2
例子2
1
HINT
数据范围
30%的数据 N<=200
100%的数据 N<=2000
贪心+DP
感性地理解一下。a[i]+b[i]较大的小矮人逃跑的能力更强。所以我们要先让a[i]+b[i]小的人尽可能先逃跑。
于是能够想到按a[i]+b[i]从小到大排序,然后贪心计算。但这个贪心显然是有问题的。所以我们考虑用DP解决贪心的不足。
贪心的不足之处在于当前的小矮人的a[i]还会对后面的小矮人产生影响。所以我们能够令f[i]表示逃跑了i个小矮人剩余a[i]和的最大值。
在更新f数组的同一时候也就计算出了答案。
注意:f数组要逆向更新。
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#define F(i,j,n) for(int i=j;i<=n;i++)
#define D(i,j,n) for(int i=j;i>=n;i--)
#define ll long long
#define maxn 2005
using namespace std;
int n,h,ans,f[maxn];
struct data{int x,y;}a[maxn];
inline int read()
{
int x=0,f=1;char ch=getchar();
while (ch<'0'||ch>'9'){if (ch=='-') f=-1;ch=getchar();}
while (ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}
return x*f;
}
inline bool cmp(data a,data b)
{
return a.x+a.y<b.x+b.y;
}
int main()
{
n=read();
memset(f,-1,sizeof(f));
f[0]=0;
F(i,1,n) a[i].x=read(),a[i].y=read(),f[0]+=a[i].x;
h=read();
sort(a+1,a+n+1,cmp);
F(i,1,n)
{
D(j,ans,0) if (f[j]+a[i].y>=h) f[j+1]=max(f[j+1],f[j]-a[i].x);
if (f[ans+1]>=0) ans++;
}
printf("%d\n",ans);
return 0;
}
bzoj3174【TJOI2013】解救小矮人的更多相关文章
- BZOJ3174 Tjoi2013 拯救小矮人(贪心+DP)
传送门 Description 一群小矮人掉进了一个很深的陷阱里,由于太矮爬不上来,于是他们决定搭一个人梯.即:一个小矮人站在另一小矮人的 肩膀上,知道最顶端的小矮人伸直胳膊可以碰到陷阱口.对于每一个 ...
- bzoj3174 [Tjoi2013]拯救小矮人
Description 一群小矮人掉进了一个很深的陷阱里,由于太矮爬不上来,于是他们决定搭一个人梯.即:一个小矮人站在另一小矮人的 肩膀上,知道最顶端的小矮人伸直胳膊可以碰到陷阱口.对于每一个小矮人, ...
- BZOJ3174:[TJOI2013]拯救小矮人(DP)
Description 一群小矮人掉进了一个很深的陷阱里,由于太矮爬不上来,于是他们决定搭一个人梯.即:一个小矮人站在另一小矮人的 肩膀上,知道最顶端的小矮人伸直胳膊可以碰到陷阱口.对于每一个小矮人, ...
- BZOJ3174. [TJOI2013]拯救小矮人(dp)
题目链接 https://www.lydsy.com/JudgeOnline/problem.php?id=3174 题解 其实此题并不需要那么多YY的部分. 我们考虑若干个小矮人逃出的顺序.若跳出的 ...
- BZOJ3174 TJOI2013 拯救小矮人 贪心、DP
传送门 原问题等价于:先给\(n\)个人排好顺序.叠在一起,然后从顶往底能走即走,问最多能走多少人 注意到一个问题:如果存在两个人\(i,j\)满足\(a_i + b_i < a_j + b_j ...
- bzoj千题计划208:bzoj3174: [Tjoi2013]拯救小矮人
http://www.lydsy.com/JudgeOnline/problem.php?id=3174 按a+b从小到大排序,a+b小的在上面,先考虑让它逃出去 正确性不会证 感性理解一下,最后一个 ...
- 【BZOJ3174】[TJOI2013]拯救小矮人(贪心,动态规划)
[BZOJ3174][TJOI2013]拯救小矮人(贪心,动态规划) 题面 BZOJ 洛谷 题解 我们定义一个小矮人的\(A_i+B_i\)为它的逃跑能力. 我们发现,如果有两个小矮人\(x,y\), ...
- 【BZOJ-3174】拯救小矮人 贪心 + DP
3174: [Tjoi2013]拯救小矮人 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 686 Solved: 357[Submit][Status ...
- BZOJ_3174_[Tjoi2013]拯救小矮人_贪心+DP
BZOJ_3174_[Tjoi2013]拯救小矮人_贪心+DP Description 一群小矮人掉进了一个很深的陷阱里,由于太矮爬不上来,于是他们决定搭一个人梯.即:一个小矮人站在另一小矮人的 肩膀 ...
随机推荐
- Codeforces 1028E. Restore Array
题目直通车:http://codeforces.com/problemset/problem/1028/E 解法:设原数组为ar[],求ar中的最大值的下标ins,依次向前遍历一遍,每一个答案值都为前 ...
- [POJ 2397] Spiderman
Link: POJ 2397 传送门 Solution: 设$dp[i][j]$表示第$i$步走到$j$高度时经过的最高高度 分向上走和向下走两种方式转移即可 注意记录路径,最后输出时要逆序输出 (逆 ...
- POJ 2914 Minimum Cut (全局最小割)
[题目链接] http://poj.org/problem?id=2914 [题目大意] 求出一个最小边割集,使得图不连通 [题解] 利用stoerwagner算法直接求出全局最小割,即答案. [代码 ...
- 弹出视图/弹出模态presentViewController与presentModalViewController
一.主要用途 弹出模态ViewController是IOS变成中很有用的一个技术,UIKit提供的一些专门用于模态显示的ViewController,如UIImagePickerController等 ...
- cubemap
cubemap 画的时候 是一张一张画 并不是画成 ------- | | | | | | | | | 这样一个位置 而是一 ...
- 机器学习&深度学习资料(转载)
转自 飞鸟各投林 <Brief History of Machine Learning> 介绍:这是一篇介绍机器学习历史的文章,介绍很全面,从感知机.神经网络.决策树.SVM.Adaboo ...
- Python 自用代码(scrapy多级页面(三级页面)爬虫)
2017-03-28 入职接到的第一个小任务,scrapy多级页面爬虫,从来没写过爬虫,也没学过scrapy,甚至连xpath都没用过,最后用了将近一周才搞定.肯定有很多low爆的地方,希望大家可以给 ...
- EffectiveJava(7)避免使用终结方法
避免使用终结方法 1.使用终结方法会导致行为不稳定,性能降低,以及可移植性的问题.(终结线程的优先级过低) 终结方法不能保证被及时的执行(从一个对象变得不可到达开始,到中介方法被执行,所花费的时间是任 ...
- MockServer的测试思想与实现
转载:http://blog.csdn.net/shen1936/article/details/50298901 背景 什么是MOCK Mock的定义 Mock框架简介 Mock在单测中的应用 De ...
- UVA 111 (复习dp, 14.07.09)
History Grading Background Many problems in Computer Science involve maximizing some measure accor ...