[TJOI2013] 奖学金 - 堆
按 a 排序,暴力用堆维护两侧预处理, 然后枚举中位数即可
#include <bits/stdc++.h>
using namespace std;
#define int long long
const int N = 1000005;
struct item {
int a,b;
bool operator < (const item &x) {
return a < x.a;
}
} I[N];
int n,c,f,a[N],b[N],p[N],q[N];
signed main() {
ios::sync_with_stdio(false);
cin>>n>>c>>f;
for(int i=1;i<=c;i++) cin>>I[i].a>>I[i].b;
sort(I+1,I+c+1);
for(int i=1;i<=c;i++) a[i]=I[i].a, b[i]=I[i].b;
priority_queue <int> qu;
int sum=0;
for(int i=1;i<=n/2;i++) qu.push(b[i]),sum+=b[i];
for(int i=n/2+1;i<=c;i++) {
p[i]=sum;
qu.push(b[i]);
sum+=b[i];
sum-=qu.top();
qu.pop();
}
while(qu.size()) qu.pop();
sum=0;
reverse(b+1,b+c+1);
for(int i=1;i<=n/2;i++) qu.push(b[i]),sum+=b[i];
for(int i=n/2+1;i<=c;i++) {
q[i]=sum;
qu.push(b[i]);
sum+=b[i];
sum-=qu.top();
qu.pop();
}
reverse(b+1,b+c+1);
reverse(q+1,q+c+1);
//for(int i=1;i<=c;i++) cout<<b[i]<<" "<<p[i]<<" "<<q[i]<<endl;
int ans=0;
for(int i=n/2+1;i<=c-(n/2);i++) {
if(p[i]+q[i]+b[i]<=f) ans=a[i];
}
cout<<(ans==0?-1:ans);
}
[TJOI2013] 奖学金 - 堆的更多相关文章
- [TJOI2013]奖学金 乱搞
[TJOI2013]奖学金 乱搞 从\(c\)个二元组\((v,w)\)中选出\(n\)个,使其\(v\)的中位数最大的同时使\(w\)和小于等于\(f\),求这个中位数 有点意思.有点像二分答案的思 ...
- TJOI2013 奖学金—大根堆实现(洛谷P3963)
奖学金 题目描述 小张学院有 \(c\) 名学生,第 \(i\) 名学生的成绩为 \(ai\) ,要获得的奖学金金额为 \(bi\) . 要从这 \(c\) 名学生中挑出 \(n\) 名学生发奖学金 ...
- [TJOI2013] 奖学金
代码: #include<bits/stdc++.h> using namespace std; long long n,c,ff,ans; long long suma[200010], ...
- 6.28日模拟考试总结(T1:翻转游戏;T2:抢掠计划,T3:测绘,T4:奖学金)
今天的考试有结束了,又一次被右边的同桌虐了(额,排名第三的大佬)但是考试还是进步了一名,算是有进步吧 成绩: 那个12名就是我,一个AC都没有,太难受了. T1: 题目链接:http://hzoi.c ...
- CSP-S考前各种idea题解乱堆
快要考试了我还是这么菜. 已经没有心思维护我的博客了.开一篇博文吧.可能会记得很乱. 这也许是我OI生涯的最后一篇博文了?? 肯定很长很长. 不可能的.谁知道什么时候我心态恢复就把上面两句话删掉开始在 ...
- Java 堆内存与栈内存异同(Java Heap Memory vs Stack Memory Difference)
--reference Java Heap Memory vs Stack Memory Difference 在数据结构中,堆和栈可以说是两种最基础的数据结构,而Java中的栈内存空间和堆内存空间有 ...
- [数据结构]——堆(Heap)、堆排序和TopK
堆(heap),是一种特殊的数据结构.之所以特殊,因为堆的形象化是一个棵完全二叉树,并且满足任意节点始终不大于(或者不小于)左右子节点(有别于二叉搜索树Binary Search Tree).其中,前 ...
- 《徐徐道来话Java》:PriorityQueue和最小堆
在讲解PriorityQueue之前,需要先熟悉一个有序数据结构:最小堆. 最小堆是一种经过排序的完全二叉树,其中任一非终端节点数值均不大于其左孩子和右孩子节点的值. 可以得出结论,如果一棵二叉树满足 ...
- 计算机程序的思维逻辑 (47) - 堆和PriorityQueue的应用
45节介绍了堆的概念和算法,上节介绍了Java中堆的实现类PriorityQueue,PriorityQueue除了用作优先级队列,还可以用来解决一些别的问题,45节提到了如下两个应用: 求前K个最大 ...
随机推荐
- 进阶之路 | 奇妙的Animation之旅
前言 本文已经收录到我的Github个人博客,欢迎大佬们光临寒舍: 我的GIthub博客 学习清单: 动画的种类 自定义View动画 View动画的特殊使用场景 属性动画 使用动画的注意事项 一.为什 ...
- MySQL之ERROR 1558 (HY000): Column count of mysql.user is wrong.解决方案
一.场景 我本想在MySQL5.7上执行下列语句创建一个新用户: CREATE USER "remote"@"%" IDENTIFIED BY "12 ...
- IIS6的文件解析漏洞
IIS6的默认配置漏洞会把cer.cdx.asa作为asp代码来解析 后缀解析漏洞 /test.asp;.jpg 或者/test.asp:.jpg(此处需抓包修改文件名) IIS6.0 都会把此类后缀 ...
- postgresql 文件布局
我们知道linux中一个思想:一切皆文件,那么在我们安装完postgresql数据库后,她长什么样呢?本文带着你一起揭开她的面纱,看看postgresql的文件布局. 说明:由于安装测试的版本是10. ...
- day 16内置函数总结
reversed()l = [1,2,3,4,5]l.reverse()print(l) l = [1,2,3,4,5]l2 = reversed(l)reversed:更加节省内存资源print(l ...
- 五种编程语言解释数据结构与算法——顺序表2(java与C++语言实现)
5.java实现方式: 5.1.顺序表的抽象结构 package com.xgp.顺序表; public interface MyList<T> { //1. initList(& ...
- c#画图之柱形图
public JsonResult DrawBarChart() { #region 允许配置项 //定义宽高 , width = ; //边缘位置留白 ; ; ; ; //辅助线距离顶部的距离 ; ...
- Mysql-分库分区分表
大数据-分表分区分库问题集:1.分表时两张表的数据都一样么?如果一样,只是降低了表的访问量,但是如果数据多了还是没有提高查询的效率答:分表是对一张表中的数据按照某种规则进行拆分到三张表中,三张表的所有 ...
- 浅谈python的第三方库——numpy(二)
前一期博文中,初步探索了numpy中矩阵的几种运算操作,本文将展示numpy矩阵的元素抽取与合并操作. 1 元素抽取 在我们使用矩阵的时候,有时需要提取出矩阵的某些位置上的元素单独研究,这时就需要熟悉 ...
- #AcWing系列课程Level-2笔记——4. 浮点数二分算法
浮点数二分算法 编写浮点数二分,记住下面的思路,代码也就游刃有余了! 1.首先找到数组的中间值,mid=(left+right)>>1,区间[left, right]被划分成[left, ...