3174: [Tjoi2013]解救小矮人

Time Limit: 1 Sec  Memory Limit: 128 MB

Submit: 573  Solved: 293

[Submit][Status][

id=3174" style="color:blue; text-decoration:none">Discuss]

Description

一群小矮人掉进了一个非常深的陷阱里,因为太矮爬不上来,于是他们决定搭一个人梯。即:一个小矮人站在还有一小矮人的 肩膀上。知道最顶端的小矮人伸直胳膊能够碰到陷阱口。

对于每个小矮人,我们知道他从脚到肩膀的高度Ai,而且他的胳膊长度为Bi。陷阱深度为H。假设我 们利用矮人1,矮人2。矮人3,。。

。矮人k搭一个梯子,满足A1+A2+A3+....+Ak+Bk>=H,那么矮人k就能够离开陷阱逃跑了,一
旦一个矮人逃跑了,他就不能再搭人梯了。

我们希望尽可能多的小矮人逃跑, 问最多能够使多少个小矮人逃跑。

Input

第一行一个整数N, 表示矮人的个数。接下来N行每一行两个整数Ai和Bi,最后一行是H。(Ai。Bi,H<=10^5)

Output

一个整数表示对多能够逃跑多少小矮人

Sample Input

例子1



2

20 10

5 5

30



例子2

2

20 10

5 5

35

Sample Output

例子1

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】解救小矮人的更多相关文章

  1. BZOJ3174 Tjoi2013 拯救小矮人(贪心+DP)

    传送门 Description 一群小矮人掉进了一个很深的陷阱里,由于太矮爬不上来,于是他们决定搭一个人梯.即:一个小矮人站在另一小矮人的 肩膀上,知道最顶端的小矮人伸直胳膊可以碰到陷阱口.对于每一个 ...

  2. bzoj3174 [Tjoi2013]拯救小矮人

    Description 一群小矮人掉进了一个很深的陷阱里,由于太矮爬不上来,于是他们决定搭一个人梯.即:一个小矮人站在另一小矮人的 肩膀上,知道最顶端的小矮人伸直胳膊可以碰到陷阱口.对于每一个小矮人, ...

  3. BZOJ3174:[TJOI2013]拯救小矮人(DP)

    Description 一群小矮人掉进了一个很深的陷阱里,由于太矮爬不上来,于是他们决定搭一个人梯.即:一个小矮人站在另一小矮人的 肩膀上,知道最顶端的小矮人伸直胳膊可以碰到陷阱口.对于每一个小矮人, ...

  4. BZOJ3174. [TJOI2013]拯救小矮人(dp)

    题目链接 https://www.lydsy.com/JudgeOnline/problem.php?id=3174 题解 其实此题并不需要那么多YY的部分. 我们考虑若干个小矮人逃出的顺序.若跳出的 ...

  5. BZOJ3174 TJOI2013 拯救小矮人 贪心、DP

    传送门 原问题等价于:先给\(n\)个人排好顺序.叠在一起,然后从顶往底能走即走,问最多能走多少人 注意到一个问题:如果存在两个人\(i,j\)满足\(a_i + b_i < a_j + b_j ...

  6. bzoj千题计划208:bzoj3174: [Tjoi2013]拯救小矮人

    http://www.lydsy.com/JudgeOnline/problem.php?id=3174 按a+b从小到大排序,a+b小的在上面,先考虑让它逃出去 正确性不会证 感性理解一下,最后一个 ...

  7. 【BZOJ3174】[TJOI2013]拯救小矮人(贪心,动态规划)

    [BZOJ3174][TJOI2013]拯救小矮人(贪心,动态规划) 题面 BZOJ 洛谷 题解 我们定义一个小矮人的\(A_i+B_i\)为它的逃跑能力. 我们发现,如果有两个小矮人\(x,y\), ...

  8. 【BZOJ-3174】拯救小矮人 贪心 + DP

    3174: [Tjoi2013]拯救小矮人 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 686  Solved: 357[Submit][Status ...

  9. BZOJ_3174_[Tjoi2013]拯救小矮人_贪心+DP

    BZOJ_3174_[Tjoi2013]拯救小矮人_贪心+DP Description 一群小矮人掉进了一个很深的陷阱里,由于太矮爬不上来,于是他们决定搭一个人梯.即:一个小矮人站在另一小矮人的 肩膀 ...

随机推荐

  1. AppScan 浏览器兼容解决

    手动探索的时候,因为打开的浏览器是appscan自带的,可能会存在兼容性问题,有些页面无法正常打开.那么是否可以用我们电脑上的浏览器(IE .火狐.谷歌)来进行录制 菜单栏--工具---选项----首 ...

  2. Palindrome Permutation -- LeetCode

    Given a string, determine if a permutation of the string could form a palindrome. For example," ...

  3. [Bzoj5285][洛谷P4424][HNOI/AHOI2018]寻宝游戏(bitset)

    P4424 [HNOI/AHOI2018]寻宝游戏 某大学每年都会有一次Mystery Hunt的活动,玩家需要根据设置的线索解谜,找到宝藏的位置,前一年获胜的队伍可以获得这一年出题的机会. 作为新生 ...

  4. 四. Java继承和多态1. 继承的概念与实现

    继承是类与类之间的关系,是一个很简单很直观的概念,与现实世界中的继承(例如儿子继承父亲财产)类似. 继承可以理解为一个类从另一个类获取方法和属性的过程.如果类B继承于类A,那么B就拥有A的方法和属性. ...

  5. 新人补钙系列教程之:AS3事件处理--事件流

    一个flash应用程序可能会非常复杂,比如,有很多可视实例嵌套在一起,这样的话会形成一个树形结构,这个结构的根是stage,然后一级级到不同的实例,一般来说,要把这个树形结构倒过来看,即stage在顶 ...

  6. Unity3d / 3ds max 模型分享站点

    http://www.cgrealm.org/model/ 王国3D模型库 http://www.cgjoy.com/ 游戏特效论坛

  7. ASIHttpRequest请求时的默认编码

    在ASIHttpRequest.m文件 中的 - (id)initWithURL:(NSURL *)newURL方法中找到 [self setDefaultResponseEncoding:NSISO ...

  8. mysql update 的时候使用left join和where语句

    在使用update语句的时候我们有时候需要利用left join 关联表,以下是正确操作: 效果,让指定的order表id为1,2,3数据的finish_at字段更新为freports表的create ...

  9. 2017.6.30 IDEA插件--gsonfomat的安装与使用

    参考来自:http://www.cnblogs.com/1024zy/p/6370305.html 1.安装 2.使用 (1)新建一个空类 (2)在空类里按快捷键:alt+s,打开gsonformat ...

  10. iOS_block代码块

    watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcHJlX2VtaW5lbnQ=/font/5a6L5L2T/fontsize/400/fill/I0JBQk ...