poj2010

原创 2015年11月17日 21:53:00
</pre><pre name="code" class="html"><img src="http://img.blog.csdn.net/20151117215338104?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" /><pre name="code" class="html">#include"iostream"
#include"cstdio"
#include"queue"
#include"algorithm"
using namespace std;
struct Cow{int s,f;}cow[101000];
bool cmp(const Cow &a,const Cow &b)
{
    if(a.s!=b.s)
       return a.s>b.s;
    else
        return a.f<b.f;
}
int main()
{
    priority_queue<int>Q;
    int n,c,f,i,nu,dpl[101000],dpr[101000];
    while(scanf("%d%d%d",&n,&c,&f)!=EOF)
    {
        for(i=1;i<=c;i++)
            cin>>cow[i].s>>cow[i].f;
        sort(cow+1,cow+1+c,cmp);
        nu=n/2;
        int sum=0;
        while(!Q.empty())
           Q.pop();
        for(i=1;i<=nu;i++)
           Q.push(cow[i].f),sum+=cow[i].f;
        dpl[nu]=sum;
        for(i=nu+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-nu+1;i--)
            Q.push(cow[i].f),sum+=cow[i].f;
        dpr[c-nu+1]=sum;
        for(i=c-nu;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 flag=false;
        for(i=nu+1;i<=c-nu;i++)
        {
            if(cow[i].f+dpl[i-1]+dpr[i+1]<=f)
            {
               cout<<cow[i].s<<endl;
               flag=true;
               break;
            }
        }
        if(!flag)
           cout<<"-1"<<endl;
    }

}



                    
版权声明:本文为博主原创文章,未经博主允许不得转载。

Poj 2010(优先队列)

Moo University - Financial Aid Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 37...

《挑战程序设计竞赛》3.1.4 二分搜索-最小化第k大的值 POJ2010 3662(2)

POJ2010http://poj.org/problem?id=2010题意给出n个数,要求将这n个数两两相减,把这些相减得到的数排序后,输出位置在中间的那个数。思路如果两两相减再排序复杂度太高,肯...

poj 2010

这道题目刚开始还真不好想,看了别人的解题思路之后恍然大悟,思路太棒了~ 题目大意是给你三个值,N,C,F,C代表有C头牛,N为奇数,代表要在C头牛中选择N头牛,每头牛有两个值,分数和代价,使得被选中...
  • leohujx
  • leohujx
  • 2015年09月17日 10:22
  • 180

POJ2010 Moo University - Financial Aid 优先队列

题目大意是youyibi

poj2010解题报告(堆)

poj2010 堆
  • Gster
  • Gster
  • 2015年07月27日 01:01
  • 72

poj 2010 Moo University - Financial Aid

#include #define MAX_N 100000+16 typedef struct { int s,f; int rank; }Cow; int N,C,F,half; Cow cow...
  • sky_zdk
  • sky_zdk
  • 2017年03月17日 20:07
  • 278

poj2010 二分中位数

如题:http://poj.org/problem?id=2010 Moo University - Financial Aid Time Limit: 1000MS   Memory Lim...

poj2010 二分做法

Moo University - Financial Aid Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 74...

POJ 2010(二分最大化中间值)

Moo University - Financial Aid Time Limit: 1000MS   Memory Limit: 30000KB   64bit IO Format: %ll...

poj2010

【题意】 有c(c 求补助奶牛的智商最大中位数 【输入】 第一行n、c、f 接下来c行每行两个数字,分别为智商和所需补助 【输出】 一个数字,表示补助奶牛的智商最大中位数 若不存在补助...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:poj2010
举报原因:
原因补充:

(最多只允许输入30个字)