标签:小矮人 top pri tot TJOI2013 身高 P4823 cmp
发现无论选择哪些逃跑的小矮人,让他们按逃跑能力从小到大逃走肯定可行。考虑最终序列互换相邻两个小矮人,并且这只跟自己有关显然满足严格弱序。
然后就建个存身高的堆,如果某个小矮人出不去且换掉之前身高最大的小矮人就能出去且当前身高小于换掉的身高就反悔,这样会使得人梯高度增加。
会不会出现换下来若干个小矮人换上去同样数量的小矮人并且必须是一起换的情况呢?
如果单独换不优,那去掉这一对肯定不劣啊。
code:
#include<bits/stdc++.h>
using namespace std;
#define For(i,x,y)for(i=x;i<=(y);i++)
struct dwarf
{
int a,b;
}p[2005];
priority_queue<int>pri;
inline bool cmp(dwarf _,dwarf __)
{
return _.a+_.b<__.a+__.b;
}
int main()
{
int n,i,tot=0,h;
cin>>n;
For(i,1,n)cin>>p[i].a>>p[i].b,tot+=p[i].a;
sort(p+1,p+n+1,cmp);
cin>>h;
For(i,1,n)
if(tot+p[i].b>=h)pri.push(p[i].a),tot-=p[i].a;
else if(!pri.empty()&&pri.top()>p[i].a&&tot+pri.top()+p[i].b>=h)
{
tot+=pri.top()-p[i].a;
pri.pop();
pri.push(p[i].a);
}
cout<<pri.size();
return 0;
}
标签:小矮人,top,pri,tot,TJOI2013,身高,P4823,cmp 来源: https://www.cnblogs.com/May-2nd/p/14902706.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。