poj2010Moo University - Financial Aid
2015-09-04 20:51
645 查看
要录取n个,那中位数左右都会有(n-1)/2个。枚举中位数第i位,左右两边预处理出(i-1)前(n-1)/2个最小数的和,(i+1)后(n-1)/2个最小数的和。
我用的是优先队列。
tip:
优先队列中排的是数时,什么也不加,按从大到小排列。
priority_queue<int,vector<int>,greater<int> >q;从小到大。
我用的是优先队列。
#include<stdio.h> #include<string.h> #include<queue> #include<algorithm> using namespace std; typedef long long ll; struct node { ll scr,mon; }edge[100005]; ll cmp(node a,node b) { return a.scr<b.scr; } ll fr[100005],af[100005]; ll cmp2(ll a,ll b) { return a<b; } ll n,c,f; struct nn { ll shu; }; priority_queue<nn>Q;//而且本人的优先队列写的真麻烦。。。 bool operator< (nn a,nn b) { return a.shu<b.shu; } int main() { while(scanf("%lld %lld %lld",&n,&c,&f)!=EOF) { memset(fr,0,sizeof(fr)); memset(af,0,sizeof(af)); for(ll i=1;i<=c;i++) { scanf("%lld %lld",&edge[i].scr,&edge[i].mon); } sort(edge+1,edge+1+c,cmp); ll mid=(n-1)/2; ll sum=0; while(!Q.empty()) { Q.pop(); } for(ll i=1;i<=mid;i++) { nn s; s.shu=edge[i].mon; Q.push(s); sum+=edge[i].mon; } fr[mid]=sum; for(ll i=mid+1;i<=c;i++) { nn t=Q.top(); if(edge[i].mon<t.shu) { Q.pop(); nn s; s.shu=edge[i].mon; Q.push(s); sum=sum-t.shu+edge[i].mon; } fr[i]=sum; } while(!Q.empty()) { Q.pop(); } sum=0; for(ll i=c;i>=c-mid+1;i--) { nn s; s.shu=edge[i].mon; Q.push(s); sum+=edge[i].mon; } af[c-mid+1]=sum; for(ll i=c-mid;i>=1;i--) { nn t=Q.top(); if(edge[i].mon<t.shu) { Q.pop(); nn s; s.shu=edge[i].mon; Q.push(s); sum=sum-t.shu+edge[i].mon; } af[i]=sum; } int si=0; for(ll i=c-mid;i>=mid+1;i--) { if(edge[i].mon+af[i+1]+fr[i-1]<=f) { printf("%lld\n",edge[i].scr); si=1; break; } } if(si==0)printf("-1\n"); } return 0; }
tip:
优先队列中排的是数时,什么也不加,按从大到小排列。
priority_queue<int,vector<int>,greater<int> >q;从小到大。
相关文章推荐
- 优先队列(priority_queue)的C语言实现代码
- PHP 数据结构队列(SplQueue)和优先队列(SplPriorityQueue)简单使用实例
- vijosP1016北京2008的挂钟 BFS + 优先队列
- 优先队列的学习笔记
- 优先队列的学习笔记
- hdu 1596 find the safest road(spfa算法)
- Black Box
- 基于算法导论6.5用最大堆实现的优先队列(C++)
- 优先队列
- [C++ STL] 优先队列容器 priority_queue
- hdu2066 最短路 dijkstra
- hdu3790 dijkstra算法
- Fence Repair(简单贪心)
- 2015ACM多校对抗赛第四场 hdu 5335
- 转载priority_queue用法总结
- 基础数据结构priority_queue用法
- poj 3253 Fence Repair(哈夫曼树)
- ZOJ 2724 Windows Message Queue(二叉堆or优先队列)
- POJ 1862 Stripies priority_queue 单调队列
- HDU1026 Ignatius and the Princess I 优先队列