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

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>
            亚洲国产精品久久人人爱蜜臀| 欧美日韩亚洲一区二| 欧美aaaaaaaa牛牛影院| 在线视频精品一区| 欧美夫妇交换俱乐部在线观看| 六月丁香综合| 亚洲国产精品欧美一二99| 在线亚洲激情| 久久久福利视频| 国产九九视频一区二区三区| 日韩午夜在线播放| 一区二区三区国产在线观看| 欧美激情视频一区二区三区在线播放| 久久天天狠狠| 亚洲在线观看免费| 国产亚洲欧美日韩美女| 久久狠狠亚洲综合| 欧美ed2k| 久久久久国色av免费看影院| 欧美在线啊v一区| 亚洲欧美日韩综合aⅴ视频| 中文欧美字幕免费| 亚洲国产一区二区三区a毛片| 在线看无码的免费网站| 欧美激情一区二区三区成人| 国产精品va在线| 在线观看日韩精品| 妖精成人www高清在线观看| 亚洲国产片色| 国产精品久久久久久影院8一贰佰 国产精品久久久久久影视 | 日韩视频在线一区二区| 韩国欧美一区| 在线中文字幕日韩| 91久久久国产精品| 亚洲一区二区三区高清不卡| 亚洲精品影视在线观看| 欧美亚洲视频| 亚洲第一二三四五区| 久久视频一区| 久久久久久国产精品mv| 欧美久久99| 久久久蜜桃一区二区人| 久久在线精品| 亚洲免费观看视频| 99精品欧美一区二区三区综合在线 | 久久天天躁狠狠躁夜夜av| 欧美在线免费观看亚洲| 久久久久久电影| 久久久久国产精品人| 亚洲国产日本| 玖玖在线精品| 国产精品视频自拍| 久久免费视频在线观看| 欧美一区二区三区喷汁尤物| 亚洲一区二三| 国产亚洲一区二区三区| 中文在线资源观看网站视频免费不卡 | 性色一区二区| 亚洲国产精品黑人久久久| 韩国一区二区在线观看| 欧美高清在线一区| 亚洲午夜av在线| 亚洲理论在线观看| 亚洲性xxxx| 久久er99精品| 亚洲黄一区二区三区| 一本色道**综合亚洲精品蜜桃冫| 欧美夫妇交换俱乐部在线观看| 久久久久久色| 一区二区免费看| 欧美国产一区视频在线观看| 亚洲九九精品| 欧美88av| 久久xxxx| 一本色道久久综合亚洲精品按摩| 欧美一级二级三级蜜桃| 亚洲精品自在久久| 欧美日韩国产综合视频在线| 老司机精品视频网站| 欧美影院一区| 麻豆av福利av久久av| 亚洲人成网站精品片在线观看 | 久久爱另类一区二区小说| 久久久久一本一区二区青青蜜月| 亚洲第一精品夜夜躁人人躁| 狠狠综合久久| 老司机久久99久久精品播放免费| 欧美一区二区播放| 欧美一区二区在线播放| 免费看的黄色欧美网站| 91久久精品国产91性色tv| 亚洲激情视频| 欧美影院午夜播放| 国产精品免费在线| 亚洲东热激情| 国产精品久久久久久影视| 亚洲中字黄色| 欧美日韩国产精品专区| 久久一区二区三区四区| 国产精品国产精品| 9i看片成人免费高清| 亚洲卡通欧美制服中文| 麻豆成人av| 亚洲精品视频二区| 国产精品免费看片| 亚洲第一网站免费视频| 99视频精品| 在线亚洲欧美视频| 欧美激情bt| 亚洲人成网站精品片在线观看| 国产一本一道久久香蕉| 羞羞漫画18久久大片| 亚洲网站啪啪| 国产精品色一区二区三区| 中文av字幕一区| 欧美在线观看视频| 国产亚洲精品久久久| 亚洲免费网址| 免费观看30秒视频久久| 在线欧美日韩国产| 久久在线免费观看| 亚洲精品久久久久久下一站| 亚洲黄色免费电影| 欧美国产日韩精品| 一区二区不卡在线视频 午夜欧美不卡'| 国产伦精品一区二区三| 欧美黑人一区二区三区| 亚洲国产99| 欧美日韩综合在线| 亚洲欧美激情四射在线日 | 久热精品视频| 亚洲第一主播视频| 欧美成人免费在线观看| 一本色道久久综合狠狠躁篇的优点| 一本色道久久精品| 国产精品激情偷乱一区二区∴| 亚洲国产精品www| 亚洲美女福利视频网站| 久久精品理论片| 欧美色另类天堂2015| 老司机67194精品线观看| 久久精品视频va| 国产色产综合色产在线视频| 久久综合网色—综合色88| 欧美不卡高清| 最新国产乱人伦偷精品免费网站| 国产精品麻豆欧美日韩ww| 91久久久精品| 一区二区欧美日韩| 亚洲高清在线视频| 精品91在线| 国产专区欧美精品| 国产精品丝袜白浆摸在线| 欧美网站大全在线观看| 欧美日韩在线精品一区二区三区| 欧美肥婆在线| 欧美成人日本| 欧美国产日韩亚洲一区| 欧美日本一区二区三区| 欧美日韩国产三级| 欧美高清视频一区二区| 欧美成人黑人xx视频免费观看| 久久久久久亚洲精品杨幂换脸 | 久久夜色精品| 欧美成人国产一区二区| 欧美另类人妖| 亚洲天堂男人| 欧美日韩午夜激情| 久久久久久尹人网香蕉| 国产精品一区在线观看| 美女在线一区二区| 亚洲国产精品久久| 亚洲欧美另类国产| 亚洲欧美成人一区二区在线电影 | 老鸭窝亚洲一区二区三区| 亚洲天堂免费在线观看视频| 欧美大片第1页| 久久亚洲欧美国产精品乐播| 久久一二三四| 亚洲韩日在线| 日韩小视频在线观看| 亚洲私人影院在线观看| 香蕉免费一区二区三区在线观看| 亚洲国产精品一区二区尤物区 | 欧美freesex8一10精品| 欧美日韩日日夜夜| 国产亚洲欧美日韩美女| 亚洲精品一区二区三区99| 午夜精品三级视频福利| 免费观看成人| 亚洲伊人久久综合| 欧美一区二区三区视频免费| 美日韩在线观看| 欧美日韩日日骚| 一区二区三区在线视频观看| 亚洲图色在线| 欧美成人精精品一区二区频| 中文在线资源观看网站视频免费不卡 | 亚洲一区二区三区在线播放| 久久一二三国产|