POJ2010 Moo University - Financial Aid

2024-06-17 03:38

本文主要是介绍POJ2010 Moo University - Financial Aid,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题意:奶牛学校招生,c头奶牛报名,要选n头(n为奇数),学校是义务制,所以每头奶牛的学费都由学校负责。每头奶牛都由自己的考试分数和它需要花的学费,学校总共有f的资金,问合法招生方案中中间分数(即排名第(n+1)/2)最高的是多少。

题解:先将所有的奶牛按照分数由高到低排序,假设k是招的奶牛中排名中间的那头,按照排序可知,[1,k-1]中的奶牛必定被招了(n-1)/2头,[k+1,c]中也必定被招了(n-1)/2头,而且无论招的是谁,分数是怎么样,最后影响结果的都只是k的分数。于是,可以预处理dpl[i]代表[1,i]头牛中选出(n-1)/2头牛的最小花费,dpr[i]代表[i,c]头牛中选出(n-1)/2头牛的花费,预处理方法可以用一个大顶堆,复杂度nlogn,最后枚举中间牛复杂度n。

 

#include <cstdio>
#include <cstdlib>
#include <queue>
#include <vector>
#include <iostream>
#include <cstring>
#include <algorithm>
#include <cmath>
using namespace std;
const int MAXN=111111;
priority_queue<int> Q;
int dpl[MAXN];
int dpr[MAXN];
struct eg
{int a,b;
}cow[MAXN];
bool cmp(const eg&a,const eg&b)
{if(a.a!=b.a)return a.a>b.a;return a.b<b.b;
}
int main()
{#ifndef ONLINE_JUDGEfreopen("G:/1.txt","r",stdin);freopen("G:/2.txt","w",stdout);#endifint n,c,f;scanf("%d%d%d",&n,&c,&f);for(int i=1;i<=c;i++)scanf("%d%d",&cow[i].a,&cow[i].b);sort(cow+1,cow+c+1,cmp);int nu=(n-1)/2;int sum=0;for(int i=1;i<=nu;i++){Q.push(cow[i].b);sum+=cow[i].b;}dpl[nu]=sum;for(int i=nu+1;i<=c;i++){if(cow[i].b>Q.top()){dpl[i]=sum;}else{sum=sum-Q.top()+cow[i].b;Q.pop();Q.push(cow[i].b);dpl[i]=sum;}}sum=0;while(!Q.empty())Q.pop();for(int i=c;i>=c-nu+1;i--){Q.push(cow[i].b);sum+=cow[i].b;}dpr[c-nu+1]=sum;for(int i=c-nu;i>=1;i--){if(cow[i].b>Q.top()){dpr[i]=sum;}else{sum=sum-Q.top()+cow[i].b;Q.pop();Q.push(cow[i].b);dpl[i]=sum;}}bool flag=false;for(int i=nu+1;i<=c-nu;i++){if(cow[i].b+dpl[i-1]+dpr[i+1]<=f){flag=true;printf("%d\n",cow[i].a);break;}}if(!flag)printf("-1\n");
}


 

这篇关于POJ2010 Moo University - Financial Aid的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1068386

相关文章

2014 Multi-University Training Contest 8小记

1002 计算几何 最大的速度才可能拥有无限的面积。 最大的速度的点 求凸包, 凸包上的点( 注意不是端点 ) 才拥有无限的面积 注意 :  凸包上如果有重点则不满足。 另外最大的速度为0也不行的。 int cmp(double x){if(fabs(x) < 1e-8) return 0 ;if(x > 0) return 1 ;return -1 ;}struct poin

2014 Multi-University Training Contest 7小记

1003   数学 , 先暴力再解方程。 在b进制下是个2 , 3 位数的 大概是10000进制以上 。这部分解方程 2-10000 直接暴力 typedef long long LL ;LL n ;int ok(int b){LL m = n ;int c ;while(m){c = m % b ;if(c == 3 || c == 4 || c == 5 ||

2014 Multi-University Training Contest 6小记

1003  贪心 对于111...10....000 这样的序列,  a 为1的个数,b为0的个数,易得当 x= a / (a + b) 时 f最小。 讲串分成若干段  1..10..0   ,  1..10..0 ,  要满足x非递减 。  对于 xi > xi+1  这样的合并 即可。 const int maxn = 100008 ;struct Node{int

POJ2010 贪心优先队列

c头牛,需要选n头(奇数);学校总共有f的资金, 每头牛分数score和学费cost,问合法招生方案中,中间分数(即排名第(n+1)/2)最高的是多少。 n头牛按照先score后cost从小到大排序; 枚举中间score的牛,  预处理左边与右边的最小花费和。 预处理直接优先队列贪心 public class Main {public static voi

Accept CS Ph.D. Offer from Stony Brook University,去SUNY石溪大学的CS Ph.D.啦

前言:在2017年3月24日,正式决定去纽约州立大学石溪分校(State University of New York, Stony Brook,简称石溪大学),CS Ph.D. 项目。本科直博,DIY申请,全额奖学金,第一年5.1万美元(免学费2.2万,2017 fall, 2018 spring 的TA 1.93万,2018 summer RA 1万,没有 Fellowship) Abs

2015 Multi-University Training Contest 5 1009 MZL#39;s Border

MZL's Border  Problem's Link:  http://acm.hdu.edu.cn/showproblem.php?pid=5351   Mean:  给出一个类似斐波那契数列的字符串序列,要你求给出的f[n]字符串中截取前m位的字符串s中s[1...i] = s[s.size()-i+1....s.size()]的最大长度。 analyse:   过计算

2014 Multi-University Training Contest 1/HDU4861_Couple doubi(数论/规律)

解题报告 两人轮流取球,大的人赢,,, 贴官方题解,,,反正我看不懂,,,先留着理解 关于费马小定理 关于原根 找规律找到的,,,sad,,, 很容易找到循环节为p-1,每一个循环节中有一个非零的球,所以只要判断有多少完整循环节,在判断奇偶,,, #include <iostream>#include <cstdio>#include <cstring>

Local GAP - Financial Statement Version 【海外BS\PL报表】

业务场景: 基于海外IFRS等会计准则为客户定义一套BS\PL报表 BS - 从科目余额抓取 PL - 从利润中心报表抓取 会计报表版本的建立: 路径:IMG>财务会计(新)>总账会计核算(新)主数据>总账科目>定义会计报表版本 事务代码:OB58 Chart of Account : Operation Chart of Account; Build up the

Coursera耶鲁大学金融课程:Financial Markets 笔记Week 02

Financial Markets 本文是学习 https://www.coursera.org/learn/financial-markets-global这门课的学习笔记 这门课的老师是耶鲁大学的Robert Shiller https://en.wikipedia.org/wiki/Robert_J._Shiller Robert James Shiller (born Ma

2016 Multi-University Training Contest 2-1001---HDU 5734 Acperience

题目链接:HDU 5734题意:有一个向量: W=(w1,w2,...,wn) W=(w_1,w_2,...,w_n),求一个数 α(α≥0) \alpha(\alpha \ge 0)和一个 B=(b1,b2,...,bn) B=(b_1,b_2,...,b_n)向量,使得 ∥W−αB∥2 \left\| W - \alpha B \right\|^2的值最小。 注: ∥X∥=x21+⋯+x2n