poj2010】的更多相关文章

题目地址 分析:如果用二分法,关键是score和aid分开排序,score排序是为了充分利用中位数的性质,这样就可以确定m左右必须各选N/2个,到这之后有人是用dp求最优解,可以再次按照aid排序一次,可以直接确定最优解(肯定是从最小的开始选择!): #include <cstdio> #include <algorithm> #include <cstring> using namespace std; int N, C, F; ; struct Cow{ int i…
题意: 在C头牛里选N头牛,每头牛需要花掉一定经费ai才能得到一定得bi分,在不超过经费F的情况下,使得N头牛的得分中位数最大.(1 <= N <= 19,999,奇数) (N <= C <= 100,000)(0 <= F <= 2,000,000,000) 输入:(N,C,F;ai,bi) 3 5 70 30 25 50 21 20 20 5 18 35 30 输出:    35 分析: 最朴素的办法:按分数从小到大排列,枚举原点,从右到左扫,区间为[(m+1)/2…
题意的话,就看其他人的吧 概括:二分中位数 大体上便是二分一个中位数,带入检验,若分数比他小的有\(\lfloor n/2 \rfloor\)个,分数比他的大的也有这么多,而且贪心的买,花费小于预算. 便带入到数作为中位数是可以的.记录并进行下一次二分 #include<cstdio> #include<algorithm> #include<iostream> #include<cstring> using std::sort; const int max…
大学招n(n为奇数)个牛 招第i个牛需要ai块钱 第i个牛高考si分 输入招的牛数n 总的牛数c 总的钱数f 以及ai si 问用这些钱招的n个牛高考分数的中位数最大是多少 如果钱不够输出-1 这题结果只与中间那个牛的分数有关 设k=(n+1)/2 则可以得到分比k低的招了(n-1)/2个 比k高的也招了(n-1)/2个 用dpL[i]表示在[1,i]中招(n-1)/2个的最小花费 用dpR[i]表示在[i,c]中招(n-1)/2个的最小花费 排序 枚举k 如果满足dpL[i] + dpR[i]…
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 wish…
poj2110 二分答案+bfs判定 poj2112 二分答案+最大流判定(二分答案真乃USACO亲儿子) poj1986 裸的LCA,值得注意的是,树中任意两点的距离可以等于这两点到根的距离减去2*根到他们LCA的距离 poj3259 spfa判断负环是否存在 poj2141 水题 poj3189 还是二分答案+sap最大流(到底有多少个这样的题目) poj2228 环形dp poj2387 我只是来测dij+heap模板的 poj2111 记忆化搜索(跟我最做的poj滑雪很像) poj201…
POJ题目分类 | POJ题目分类 | HDU题目分类 | ZOJ题目分类 | SOJ题目分类 | HOJ题目分类 | FOJ题目分类 | 模拟题: POJ1006 POJ1008 POJ1013 POJ1016 POJ1017 POJ1169 POJ1298 POJ1326 POJ1350 POJ1363 POJ1676 POJ1786 POJ1791 POJ1835 POJ1970 POJ2317 POJ2325 POJ2390 POJ1012 POJ1082 POJ1099 POJ1114…
一.题面 POJ2010 二.分析 堆预处理 首先可以考虑吧随便取一个点,判断两侧的最小的总费用是多少,然后相加判断是否满足条件.如果直接判断会超时,所以需要用大根堆预处理一下.先看从分数最小的往最大的预处理,先取N/2个相加,并把他们都加入到堆中,先假设这个和值是最大的,然后不断往后扫描的过程中,不断更新大根堆的根值,以及它的和.反向预处理类似.比较容易出错的是选的范围,如果不用那些不可能到的点,可以随意点,但如果需要使用这些点,需要用足够大的值填充. 三.AC代码 #include <cst…
Moo University - Financial Aid Descriptions 奶牛大学:奶大招生,从C头奶牛中招收N(N为奇数)头.它们分别得分score_i,需要资助学费aid_i.希望新生所需资助不超过F,同时得分中位数最高.求此中位数. Input *第1行:三个以空格分隔的整数N,C和F *第2..C + 1行:每行两个以空格分隔的整数.首先是小牛的CSAT分数; 第二个整数是小牛所需的经济援助金额 Output *第1行:一个整数,即Bessie可以达到的最大中位数分数.如果…