[TJOI2013]拯救小矮人

时间:2022-12-17 13:59:12

题目

首先有一个很假的贪心

我们定义一个人的需求为\(H-h_i-b_i\),就是这个人需要多少的高度在他下面他才能逃出去

我们趁剩余的高度还够,优先满足需求较高的

显然是错的,可能有一个人身高很高,但是胳膊短,于是需求很大,但是我们满足了这个人就不能提供那么多的高度了

于是我们先按照需求从大到小排个序,之后顺便维护一个\(dp[i][j]\)表示前\(i\)个人里满足了\(j\)个人之后剩下的人生提供的高度最多是多少

对于每个人我们看看他是逃还是不逃就好了

代码

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define re register
#define LL long long
#define max(a,b) ((a)>(b)?(a):(b))
#define min(a,b) ((a)<(b)?(a):(b))
inline int read() {
char c=getchar();int x=0;while(c<'0'||c>'9') c=getchar();
while(c>='0'&&c<='9') x=(x<<3)+(x<<1)+c-48,c=getchar();return x;
}
struct P{int h,b,need;}a[2005];
inline int cmp(P A,P B) {return A.need>B.need;}
int dp[2005][2005],beh[2005];
int n,H;
int main() {
n=read();
for(re int i=1;i<=n;i++) a[i].h=read(),a[i].b=read();
H=read();
for(re int i=1;i<=n;i++) a[i].need=H-a[i].h-a[i].b;
std::sort(a+1,a+n+1,cmp);
for(re int i=n;i;i--) beh[i]=beh[i+1]+a[i].h;
memset(dp,-20,sizeof(dp));dp[0][0]=0;
for(re int i=1;i<=n;i++) {
for(re int j=0;j<i;j++) {
if(dp[i-1][j]+beh[i+1]>=a[i].need) dp[i][j+1]=max(dp[i][j+1],dp[i-1][j]);
dp[i][j]=max(dp[i][j],dp[i-1][j]+a[i].h);
}
}
for(re int i=n;i>=0;i--)
if(dp[n][i]>=0) return printf("%d",i),0;
return 0;
}

[TJOI2013]拯救小矮人的更多相关文章

  1. BZOJ&lowbar;3174&lowbar;&lbrack;Tjoi2013&rsqb;拯救小矮人&lowbar;贪心&plus;DP

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

  2. 【BZOJ3174】&lbrack;TJOI2013&rsqb;拯救小矮人(贪心,动态规划)

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

  3. 贪心&plus;DP【洛谷P4823】 &lbrack;TJOI2013&rsqb;拯救小矮人

    P4823 [TJOI2013]拯救小矮人 题目描述 一群小矮人掉进了一个很深的陷阱里,由于太矮爬不上来,于是他们决定搭一个人梯.即:一个小矮人站在另一小矮人的 肩膀上,知道最顶端的小矮人伸直胳膊可以 ...

  4. &lbrack;luogu&rsqb; P4823 &lbrack;TJOI2013&rsqb;拯救小矮人(贪心)

    P4823 [TJOI2013]拯救小矮人 题目描述 一群小矮人掉进了一个很深的陷阱里,由于太矮爬不上来,于是他们决定搭一个人梯.即:一个小矮人站在另一小矮人的 肩膀上,知道最顶端的小矮人伸直胳膊可以 ...

  5. BZOJ3174 Tjoi2013 拯救小矮人(贪心&plus;DP)

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

  6. bzoj3174 &lbrack;Tjoi2013&rsqb;拯救小矮人

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

  7. bzoj 3174&colon; &lbrack;Tjoi2013&rsqb;拯救小矮人

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

  8. &lbrack;TJOI2013&rsqb;拯救小矮人&lbrack;排序&plus;dp&rsqb;

    题意 题目链接 分析 Imagine的完美回答 重点大概是证明我们选出要救的小矮人一定可以根据 \(a_i+b_i\) 的大小进行排序救出. 注意这里关注的对象是可以保留的高度,所以我们的dp值才会表 ...

  9. BZOJ3174&colon;&lbrack;TJOI2013&rsqb;拯救小矮人&lpar;DP&rpar;

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

  10. BZOJ3174&period; &lbrack;TJOI2013&rsqb;拯救小矮人(dp)

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

随机推荐

  1. HDOJ2015偶数求和

    偶数求和 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submis ...

  2. 50个必备的实用jQuery代码段&plus; 可以直接拿来用的15个jQuery代码片段

    50个必备的实用jQuery代码段+ 可以直接拿来用的15个jQuery代码片段 本文会给你们展示50个jquery代码片段,这些代码能够给你的javascript项目提供帮助.其中的一些代码段是从j ...

  3. java class加载机制及对象生成机制

    java class加载机制及对象生成机制 当使用到某个类,但该类还未初始化,未加载到内存中时会经历类加载.链接.初始化三个步骤完成类的初始化.需要注意的是类的初始化和链接的顺序有可能是互换的. Cl ...

  4. SQL Server 锁实验(重建索引)

    昨晚某现场报一个重建索引失败的问题,远程查看后发现是自动收缩的内部会话引发的锁申请超时,突然想起来自己的加锁实验还没完成索引重建部分,今天有空正好做一下: USE [数据库名] GO ALTER IN ...

  5. mysql 解锁

    show OPEN TABLES where In_use > 0;show processlist;show status like 'Table%';show status like '%l ...

  6. display&colon;box的兼容写法

    .box{ /* display */ display: -webkit-box; display: -moz-box; display: -ms-flexbox; display: -o-box; ...

  7. Sublime Text 2 - 性感无比的代码编辑器!程序员必备神器!

    Sublime Text 2 - 性感无比的代码编辑器!程序员必备神器! http://www.iplaysoft.com/sublimetext.html 代码编辑器或者文本编辑器,对于程序员来说, ...

  8. django 连接mysql 数据库

    1.新建一个mysite项目:django-admin startproject mysite 2.进入项目目录,新建一个app : python manage.py startapp polls 3 ...

  9. Linux基础配置

    1  常用软件安装 yum install -y bash-completion vim lrzsz wget expect net-tools nc nmap tree dos2unix htop ...

  10. VS2008默认的字体居然是 新宋体

    本人还是觉得 C#就是要这样看着舒服