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. [Python Cookbook] Pandas: Indexing of DataFrame

    Selecting a Row df.loc[index] # if index is a string, add ' '; if index is a number, no ' ' or df.il ...

  2. HDOJ 1300 Pearls 斜率优化dp

    原题连接:http://acm.hdu.edu.cn/showproblem.php?pid=1300 题意: 题目太长了..自己看吧 题解: 看懂题目,就会发现这是个傻逼dp题,斜率优化一下就好 代 ...

  3. python3 全栈开发 -- 面向对象 类的组合和封装

    一.类的组合 1.什么是组合 组合:描述的是类与类之间的关系,是一种什么有什么关系 一个类产生的对象,该对象拥有一个属性,这个属性的值是来自于另外一个类的对象 2.什么是继承(回顾一下) 继承:描述的 ...

  4. openresty的lua_package_path

    文档 lua_package_path可以配置openresty的文件寻址路径.官网文档如下: # 设置纯 Lua 扩展库的搜寻路径(';;' 是默认路径): lua_package_path '/f ...

  5. CocoaPods 错误 target overrides the `OTHER_LDFLAGS`...

    Xcode 升级到 6.0 后,更新 CocoaPods,出现了如下的警告 [!] The `Paopao [Debug]` target overrides the `PODS_ROOT` buil ...

  6. How to create an IPA (Xcode 5)

    This tutorial will walk you through the easiest way to generate an IPA using Xcode 5. We will be usi ...

  7. powerdesigner操作

    转:http://w-tingsheng.blog.163.com/blog/static/25056034201392331452977/ 使用PowerDesigner生成数据库建表SQL脚 本时 ...

  8. CM3大礼包

  9. npm中package-lock.json的作用:npm install安装时使用

    简单理解: XYZ 的格式 对应为: 主版本号.次版本号.修订号,版本号递增规则如下: 主版本号:当你做了不兼容的 API 修改, 次版本号:当你做了向下兼容的功能性新增, 修订号:当你做了向下兼容的 ...

  10. linux 下查看硬件信息(mac,IP地址,硬盘型号,序列号等)

    一.查看网卡mac地址 #安装lshw [root@server ~]# yum install lshw #使用方法 [root@rsync-server ~]# lshw -c network * ...