poj 2010 Moo University - Financial Aid 大顶堆维护最小和
2015-01-08 11:45
423 查看
题意:
有c有牛,从中选(n-1)/2头,使他们的得分中位数最大且需要的资金援助和不超过f.
分析:
堆的运用大顶堆维护最小和。
代码:
有c有牛,从中选(n-1)/2头,使他们的得分中位数最大且需要的资金援助和不超过f.
分析:
堆的运用大顶堆维护最小和。
代码:
//poj 2010 //sep9 #include <iostream> #include <queue> #include <algorithm> using namespace std; const int maxN=100024; int dpl[maxN],dpr[maxN]; priority_queue<int> Q; struct Cow { int s,f; }cow[maxN]; int cmp(Cow x,Cow y) { return x.s>y.s; } int main() { int i,n,c,f; while(scanf("%d%d%d",&n,&c,&f)==3){ n=(n-1)/2; for(i=1;i<=c;++i) scanf("%d%d",&cow[i].s,&cow[i].f); sort(cow+1,cow+1+c,cmp); while(!Q.empty()) Q.pop(); int sum=0; for(i=1;i<=n;++i) Q.push(cow[i].f),sum+=cow[i].f; dpl =sum; for(i=n+1;i<=c;++i) if(cow[i].f>=Q.top()) dpl[i]=sum; else{ sum=sum-Q.top()+cow[i].f; Q.pop(); Q.push(cow[i].f); dpl[i]=sum; } sum=0; while(!Q.empty()) Q.pop(); for(i=c;i>=c-n+1;--i) Q.push(cow[i].f),sum+=cow[i].f; dpr[c-n+1]=sum; for(i=c-n;i>=1;--i) if(cow[i].f>=Q.top()) dpr[i]=sum; else{ sum=sum-Q.top()+cow[i].f; Q.pop(); Q.push(cow[i].f); dpr[i]=sum; } bool ok=false; for(i=n+1;i<=c-n;++i) if(cow[i].f+dpl[i-1]+dpr[i+1]<=f){ ok=true; printf("%d\n",cow[i].s); break; } if(!ok) printf("-1\n"); } return 0; }
相关文章推荐
- POJ 2010 Moo University - Financial Aid 堆的高级应用 -- 维护最小(最大和)
- POJ 2010 Moo University - Financial Aid(堆维护滑窗kth,二分)
- poj 2010 Moo University - Financial Aid(优先队列(最小堆)+ 贪心 + 枚举)
- poj -2010 Moo University - Financial Aid (优先队列)
- POJ2010 Moo University - Financial Aid
- POJ 2010 Moo University - Financial Aid (优先队列)
- POJ 2010 Moo University - Financial Aid
- POJ 2010 Moo University - Financial Aid
- poj 2010 Moo University - Financial Aid 优先队列
- 【优先队列】POJ2010- Moo University-Financial Aid
- POJ 2010 Moo University - Financial Aid (优先队列/二分答案)
- [POJ 2010]Moo University - Financial Aid[优先队列]
- poj 2010 Moo University - Financial Aid
- poj 2010 Moo University - Financial Aid
- POJ 2010 - Moo University - Financial Aid (优先队列)
- POJ 2010 Moo University - Financial Aid (优先队列)
- poj 2010 Moo University - Financial Aid (贪心+线段树)
- POJ:2010-Moo University - Financial Aid
- POJ 2010 Moo University - Financial Aid
- POJ2010-Moo University-Financial Aid