青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

poj2010

Moo University - Financial Aid

Time Limit: 1000MS Memory Limit: 30000K
Total Submissions: 3115 Accepted: 945

Description

Bessie noted that although humans have many universities they can attend, cows have none. To remedy this problem, she and her fellow cows formed a new university called The University of Wisconsin-Farmside,"Moo U" for short.

Not wishing to admit dumber-than-average cows, the founders created an incredibly precise admission exam called the Cow Scholastic Aptitude Test (CSAT) that yields scores in the range 1..2,000,000,000.

Moo U is very expensive to attend; not all calves can afford it.In fact, most calves need some sort of financial aid (0 <= aid <=100,000). The government does not provide scholarships to calves,so all the money must come from the university's limited fund (whose total money is F, 0 <= F <= 2,000,000,000).

Worse still, Moo U only has classrooms for an odd number N (1 <= N <= 19,999) of the C (N <= C <= 100,000) calves who have applied.Bessie wants to admit exactly N calves in order to maximize educational opportunity. She still wants the median CSAT score of the admitted calves to be as high as possible.

Recall that the median of a set of integers whose size is odd is the middle value when they are sorted. For example, the median of the set {3, 8, 9, 7, 5} is 7, as there are exactly two values above 7 and exactly two values below it.

Given the score and required financial aid for each calf that applies, the total number of calves to accept, and the total amount of money Bessie has for financial aid, determine the maximum median score Bessie can obtain by carefully admitting an optimal set of calves.

Input

* Line 1: Three space-separated integers N, C, and F

* Lines 2..C+1: Two space-separated integers per line. The first is the calf's CSAT score; the second integer is the required amount of financial aid the calf needs

Output

* Line 1: A single integer, the maximum median score that Bessie can achieve. If there is insufficient money to admit N calves,output -1.

Sample Input

3 5 70
30 25
50 21
20 20
5 18
35 30

Sample Output

35

Hint

Sample output:If Bessie accepts the calves with CSAT scores of 5, 35, and 50, the median is 35. The total financial aid required is 18 + 30 + 21 = 69 <= 70.

Source

USACO 2004 March Green

好題
題目意思是
告訴你要選出n個人(n為奇數)和總人數 和能提供的最大的幫助f
再告訴你每個人的成績和所需的aid,
然后我們要從其中找出n個人來,保證aid的和<=f的條件下,使得他們的中位數最大
這題乍一看摸不著頭腦,我們可以來分析一下
n為什么是奇數而不是偶數呢,顯然,奇數的話,中位數必然是一個固定的數,而不是兩個數的average
這樣想,我們有一點思路了
我們可以枚舉這個中位數,然后去驗證有沒有情況滿足
但是怎么驗證呢
首先,我們發現,有一部分必然不是中位數,這是前n/2小的和后n/2大的
所以我們先排一下序,只去枚舉中間的一段當中位數,假設當前枚舉第i個
那么我們必然要從左側選n/2個數,設其和為f1[i-1],從右側選n/2個數,設其和為f2[i+1]
使得f1+f2+need[i]<=f,
我們用f1[i-1]表示左側中選出n/2個最小的,f2[i+1] 表示……
為什么和最小的呢,自己想去吧

然后就是怎么選呢,
這就用到最大堆的數據結構
先考慮從左側選出n/2個使得和最小
我們維護一個元素個數為n/2的最大堆,
然后從n/2+1開始往堆中添加新元素,如果新元素小于堆頂,則添加并調整,
這樣,我們總是能保證選出的元素和的值最小

同樣右側選n/2個也是如此

這樣,這道題就解決了

最大堆維護最小和(dp)+枚舉


苦逼的看題啊,最后沒有結果輸出-1,我輸出0,wa了6次
哭……

code
#include <cstdio>
#include 
<cstdlib>
#include 
<cstring>
#include 
<cmath>
#include 
<ctime>
#include 
<cassert>
#include 
<iostream>
#include 
<sstream>
#include 
<fstream>
#include 
<map>
#include 
<set>
#include 
<vector>
#include 
<queue>
#include 
<algorithm>
#include 
<iomanip>
#define maxn 200005
using namespace std;
struct node 
{
    
int score,need;
}
a[maxn],tmp1;
long long sum,tmp;
int nn;
int n,c,f;
int dp1[maxn],dp2[maxn];
struct heapnode
{
    node x[maxn];
    
int num;
    
void nii(int n)
    
{
        
for(int i=1;i<=n/2;i++
            swap(x[i],x[n
-i+1]);
    }

    
long long getsum()
    
{
        
long long sum=0;
        
for(int i=1;i<=num;i++)
        
{
            sum
+=x[i].need;
        }

        
return sum;
    }

    
void down(int i,int m)
    
{
        
int t=2*i;
        
while(t<=m)
        
{
            
if(t<m&&x[t].need<x[t+1].need) t++;
            
if(x[i].need<x[t].need)
            
{
                swap(x[i],x[t]);
                i
=t;
                t
=i*2;
            }

            
else break;
        }

    }

    
void change(node tmpx)
    
{
        x[
1]=tmpx;
        down(
1,num);
    }

    
void build()
    
{
        
for(int i=num/2;i>=1;i--) down(i,num);
    }

}
heap1,heap2;
bool cmp(node t1,node t2)
{
    
if(t1.score>t2.score) 
        
return 0;
    
else if(t1.score<t2.score)
        
return 1;
    
else return t1.need<t2.need;
}

/*void print(heapnode t1)
{
    printf("\n");
    for(int i=1;i<=c;i++)
        printf("%d %d\n",t1.x[i].score,t1.x[i].need);
    printf("\n");
}
*/

int main()
{
    scanf(
"%d%d%d",&n,&c,&f);
    
for(int i=1;i<=c;i++) scanf("%d%d",&a[i].score,&a[i].need);
    sort(a
+1,a+c+1,cmp);
    memcpy(heap1.x,a,
sizeof(heap1.x));
    memcpy(heap2.x,a,
sizeof(heap2.x));
    heap2.nii(c);
    nn
=n/2;
    heap1.num
=nn;
    heap2.num
=nn;
    heap1.build();
    heap2.build();
    memset(dp1,
0,sizeof(dp1));
    memset(dp2,
0,sizeof(dp2));
    dp1[nn]
=heap1.getsum();
    dp2[nn]
=heap2.getsum();
    
for(int i=nn+1;i<=c-nn;i++)
    
{
        
if(heap1.x[i].need<heap1.x[1].need)
        
{
            dp1[i]
=dp1[i-1]-heap1.x[1].need+heap1.x[i].need;
            heap1.change(heap1.x[i]);
        }

        
else dp1[i]=dp1[i-1];
    }

    
for(int i=nn+1;i<=c-nn;i++)
    
{
        
if(heap2.x[i].need<heap2.x[1].need)
        
{
            dp2[i]
=dp2[i-1]-heap2.x[1].need+heap2.x[i].need;
            heap2.change(heap2.x[i]);
        }

        
else dp2[i]=dp2[i-1];
    }

    
bool flag;
    flag
=0;
    
for(int i=c-nn;i>=nn+1;i--)
    
{
        
if(a[i].need+dp1[i-1]+dp2[c-i]<=f)
        
{
            printf(
"%d\n",a[i].score);
            flag
=1;
            
break;
        }

    }

    
if(flag==0)
        printf(
"-1\n");
    
return 0;
}



posted on 2012-07-25 09:09 jh818012 閱讀(229) 評論(0)  編輯 收藏 引用


只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


<2025年11月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456

導航

統計

常用鏈接

留言簿

文章檔案(85)

搜索

最新評論

  • 1.?re: poj1426
  • 我嚓,,輝哥,,居然搜到你的題解了
  • --season
  • 2.?re: poj3083
  • @王私江
    (8+i)&3 相當于是 取余3的意思 因為 3 的 二進制是 000011 和(8+i)
  • --游客
  • 3.?re: poj3414[未登錄]
  • @王私江
    0ms
  • --jh818012
  • 4.?re: poj3414
  • 200+行,跑了多少ms呢?我的130+行哦,你菜啦,哈哈。
  • --王私江
  • 5.?re: poj1426
  • 評論內容較長,點擊標題查看
  • --王私江
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            狠狠色伊人亚洲综合网站色| 欧美wwwwww| 亚洲成人直播| 欧美国产免费| 性欧美1819性猛交| 久久精品视频一| 在线视频欧美日韩| 久久黄色网页| 亚洲视频一区二区免费在线观看| 午夜精品久久久久久久久久久久| 亚洲国产精品一区二区第四页av| 一本大道久久精品懂色aⅴ| 国产精品一区二区久久久久| 欧美视频手机在线| 久久永久免费| 国产精品久久网站| 亚洲国内精品在线| 国内精品久久国产| 99在线观看免费视频精品观看| 韩日精品中文字幕| 国产精品99久久久久久宅男 | 欧美一级精品大片| 免费影视亚洲| 久久久久久网址| 欧美日韩一区二区免费在线观看| 久久免费视频一区| 欧美性一区二区| 亚洲国产欧美一区二区三区丁香婷| 国产欧美日韩高清| 夜夜嗨av一区二区三区网站四季av| 在线精品国产欧美| 亚洲综合视频一区| 亚洲调教视频在线观看| 久久视频国产精品免费视频在线| 亚洲与欧洲av电影| 免费成人黄色| 欧美电影在线播放| 在线观看国产成人av片| 亚洲欧美综合国产精品一区| 一区二区三区视频观看| 欧美国产日韩一区二区三区| 欧美3dxxxxhd| 永久免费精品影视网站| 久久精品免费播放| 久久精品亚洲乱码伦伦中文 | 久久久夜夜夜| 国产夜色精品一区二区av| 一区二区三区四区国产| av成人福利| 欧美激情四色| 欧美刺激午夜性久久久久久久| 黄色一区二区三区四区| 亚洲欧美日韩在线一区| 欧美在线首页| 国产自产精品| 久久亚洲综合色| 欧美mv日韩mv国产网站| 亚洲电影观看| 亚洲制服欧美中文字幕中文字幕| 亚洲国产欧美一区二区三区同亚洲 | 麻豆精品精品国产自在97香蕉| 国产精品一区一区| 黑人一区二区三区四区五区| 欧美在线视频一区二区| 久久免费黄色| 亚洲国产精品激情在线观看| 免播放器亚洲一区| 91久久久一线二线三线品牌| 99精品免费视频| 欧美色大人视频| 亚洲影院色无极综合| 欧美中文字幕久久| 在线成人免费观看| 裸体一区二区三区| 亚洲国产一区二区三区在线播 | 久久国产精品久久久久久| 久久精品人人| 亚洲第一二三四五区| 欧美精品色综合| 亚洲尤物影院| 久久综合一区| 91久久夜色精品国产九色| 欧美日韩视频在线观看一区二区三区| 夜夜夜久久久| 久久久欧美一区二区| 亚洲日本在线观看| 国产精品久久久久影院色老大| 欧美在线一级va免费观看| 欧美岛国在线观看| 亚洲午夜在线观看| 精品99视频| 国产精品jizz在线观看美国| 小辣椒精品导航| 亚洲成色777777在线观看影院| 夜夜嗨av一区二区三区中文字幕| 国产精品入口尤物| 久久久久久久一区二区三区| 91久久国产综合久久| 欧美一区二区三区日韩| 一区二区三区在线视频免费观看 | 欧美激情在线| 欧美亚洲一区| 日韩视频久久| 欧美成人激情在线| 先锋影音一区二区三区| 亚洲国产综合在线| 国产日韩欧美一区二区| 欧美精品一级| 久久久久久久久久久一区| 国产精品99久久久久久白浆小说| 免费观看日韩| 欧美一区二区高清在线观看| 亚洲精品国产精品国自产观看| 国产亚洲精品v| 国产精品高潮呻吟| 欧美精品情趣视频| 久久午夜视频| 欧美一区二区三区视频免费播放| 99热在这里有精品免费| 久久亚洲精品伦理| 欧美精品国产| 欧美一级久久久久久久大片| 欧美午夜精品| 亚洲欧美综合v| 99re在线精品| 国产亚洲欧美激情| 欧美激情中文字幕在线| 久久动漫亚洲| 欧美一区观看| 亚洲四色影视在线观看| 亚洲欧洲在线一区| 欧美aaa级| 免费在线看一区| 麻豆国产精品777777在线| 欧美一区二区精品久久911| 一级成人国产| 日韩小视频在线观看| 91久久黄色| 亚洲高清视频的网址| 狠狠色丁香久久婷婷综合_中| 国产欧美日韩综合| 欧美体内she精视频| 欧美激情一区二区三区成人| 免费在线亚洲| 蜜臀久久99精品久久久画质超高清 | 蜜桃av综合| 嫩草影视亚洲| 欧美另类一区| 欧美日韩1区2区| 欧美日韩视频在线一区二区观看视频 | 欧美高清hd18日本| 欧美乱人伦中文字幕在线| 亚洲欧美日韩一区二区在线| 欧美韩日一区二区三区| 这里只有精品视频在线| 亚洲一区在线直播| 午夜精品免费| 亚洲欧洲久久| 在线观看欧美激情| 91久久精品美女| 亚洲国产91精品在线观看| 亚洲人体一区| 亚洲福利在线视频| 亚洲乱码国产乱码精品精天堂 | 亚洲国产精品电影| 亚洲免费大片| 亚洲精品亚洲人成人网| 一区二区欧美日韩| 午夜精品福利电影| 久久精品综合一区| 蜜臀久久99精品久久久画质超高清| 欧美国产91| 国产精品一区视频| 在线日本成人| 夜夜嗨一区二区| 欧美在线视频免费播放| 美女黄色成人网| 99精品久久久| 久久激情五月丁香伊人| 欧美jizzhd精品欧美巨大免费| 日韩一区二区精品视频| 亚洲午夜一区| 久久嫩草精品久久久精品一 | 国产日韩在线播放| 1000部精品久久久久久久久| 亚洲精品视频在线观看免费| 亚洲欧美另类久久久精品2019| 久久久久网址| 亚洲精品欧美激情| 久久激情五月婷婷| 欧美日韩免费观看一区| 国模精品娜娜一二三区| 日韩一级大片| 久久人人97超碰国产公开结果| 亚洲精品久久久久久一区二区| 午夜精品久久久久久久久 | 欧美1区3d| 午夜精品影院在线观看| 欧美另类在线播放| 一区二区亚洲精品|