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;
    }

}



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

poj2010

#include #include #include using namespace std; struct Cow { int score,money; }cow[100005]; int...
  • zhousilijames
  • zhousilijames
  • 2015年02月03日 19:07
  • 263

poj2010 二分做法

Moo University - Financial Aid Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 74...
  • csdnicewing
  • csdnicewing
  • 2016年06月12日 20:55
  • 183

POJ2010--Moo University-Financial Aid(二分)

题目大意:在C头牛里选N头牛,在不超过经费F的情况下,使得N头牛的得分中位数最大。 分析:首先,既然有两个属性,我们可以分别开两个数组,一个数组按成绩升序,一个数组按经费升序。二分中位数那头...
  • hhhhhhj123
  • hhhhhhj123
  • 2015年08月22日 23:47
  • 479

Poj 2010(优先队列)

Moo University - Financial Aid Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 37...
  • Wiking__acm
  • Wiking__acm
  • 2013年08月07日 12:43
  • 1971

POJ2010

Moo University -Financial Aid Description Bessie noted thatalthough humans have many universities ...
  • weixin_40061167
  • weixin_40061167
  • 2017年10月25日 19:21
  • 51

POJ-2010-优先队列(解题报告)

题目大意: 美国新建立了一个大学,能够给N(奇数)个学生提供助学金,但是该学校有点穷,最多能提供助学金数额为F。现在总共有C个学生可待选择,给出了这些学生的成绩以及相应的助学金,然而学校希望这个N个...
  • jhgkjhg_ugtdk77
  • jhgkjhg_ugtdk77
  • 2014年07月31日 21:13
  • 1339

poj2010 优先队列

如题:http://poj.org/problem?id=2010 Moo University - Financial Aid Time Limit: 1000MS   Me...
  • Twenty_seven
  • Twenty_seven
  • 2015年08月09日 10:07
  • 130

优先队列 POJ2010

题意:题目链接  有一所奶牛大学要招生,准备招N个,共有C个报名,每个有一个分数和它所需要的学费。现在政府要承担它们的学费,但是最多只能提供F的费用。要求你编程,使得满足费用的条件下招得得N头奶牛的分...
  • neu_chenguangq
  • neu_chenguangq
  • 2015年09月10日 09:30
  • 391

poj2010(优先队列)

Moo University - Financial Aid Time Limit: 1000MS   Memory Limit: 30000K Total Submi...
  • qq_25576697
  • qq_25576697
  • 2017年08月03日 16:01
  • 67

POJ2010 二分答案

Moo University - Financial AidTime Limit: 1000MS Memory Limit: 30000K Total Submissions: 10094...
  • wh19980604
  • wh19980604
  • 2017年09月09日 12:28
  • 88
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:poj2010
举报原因:
原因补充:

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