博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
bzoj千题计划208:bzoj3174: [Tjoi2013]拯救小矮人
阅读量:6832 次
发布时间:2019-06-26

本文共 712 字,大约阅读时间需要 2 分钟。

 

按a+b从小到大排序,a+b小的在上面,先考虑让它逃出去

正确性不会证

感性理解一下,最后一个可以达到的最高高度为a+b,显然它越大越能逃出去

 

f[i][j] 表示前i个逃出去j个后,剩余的最大高度

如果f[j]+b[i]>=H,f[j+1]=max(f[j]-a[i])

 

#include
#include
#include
#include
using namespace std; #define N 2001 struct node{ int a,b;}e[N]; int f[N]; void read(int &x){ x=0; char c=getchar(); while(!isdigit(c)) c=getchar(); while(isdigit(c)) { x=x*10+c-'0'; c=getchar(); }} bool cmp(node p,node q){ return p.a+p.b
=0;--j) if(f[j]+e[i].b>=h) f[j+1]=max(f[j+1],f[j]-e[i].a); if(f[ans+1]>=0) ans++; } cout<

 

转载于:https://www.cnblogs.com/TheRoadToTheGold/p/8256847.html

你可能感兴趣的文章