牛客网 桂林电子科技大学第三届ACM程序设计竞赛 C.二元-K个二元组最小值和最大-优先队列+贪心(思维)
链接:https://ac.nowcoder.com/acm/contest/558/C
来源:牛客网
输入描述:
第一行两个正整数N,K,表示二元组数量与需要选的数量。 接下来N行,第i行两个正整数ai,bi。
输出描述:
一行一个正整数,表示最大的a_i的最小值与b_i的最小值之和。
备注:
1≤N≤10
5
,1≤a
i
,b
i
≤10
9
一开始以为是dp,最后发现是贪心。
按照x从大到小排序,然后优先队列维护对应的y,维护y的最小值。
因为x是排好序的,所以相当于降了一维。
先删再进 和先进再删都是可以的。虽然删除的可能是x和y都最小的,但是x并没有出去,但是不影响,因为要的是最大值,所以不会对结果造成影响。
代码1(先进再删):
//C
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn=1e5+; struct node{
ll a,b; friend bool operator<(node a,node b){
return a.a>b.a;
} }x[maxn]; int main()
{
ll n,k;
cin>>n>>k;
for(int i=;i<=n;i++){
cin>>x[i].a>>x[i].b;
}
sort(x+,x++n);
priority_queue<ll,vector<ll>,greater<ll> > q;
for(int i=;i<=k;i++){
q.push(x[i].b);
}
ll y=q.top();
ll ans=x[k].a+y;
for(int i=k+;i<=n;i++){
q.push(x[i].b);q.pop();
y=q.top();
if(ans<y+x[i].a) ans=y+x[i].a;
}
cout<<ans<<endl;
return ;
}
代码2(先删再进):
//C
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn=1e5+; struct node{
ll a,b; friend bool operator<(node a,node b){
return a.a>b.a;
} }x[maxn]; int main()
{
ll n,k;
cin>>n>>k;
for(int i=;i<=n;i++){
cin>>x[i].a>>x[i].b;
}
sort(x+,x++n);
priority_queue<ll,vector<ll>,greater<ll> > q;
for(int i=;i<k;i++){
q.push(x[i].b);
}
ll ans=-;
for(int i=k;i<=n;i++){
q.push(x[i].b);
ll y=q.top();
ans=max(ans,y+x[i].a);
q.pop();
}
cout<<ans<<endl;
return ;
}
牛客网 桂林电子科技大学第三届ACM程序设计竞赛 C.二元-K个二元组最小值和最大-优先队列+贪心(思维)的更多相关文章
- 牛客网 桂林电子科技大学第三届ACM程序设计竞赛 G.路径-带条件的树的直径变形-边权最大,边数偶数的树上的最长路径-树形dp
链接:https://ac.nowcoder.com/acm/contest/558/G 来源:牛客网 路径 小猫在研究树. 小猫在研究路径. 给定一棵N个点的树,每条边有边权,请你求出最长的一条路径 ...
- 牛客网 桂林电子科技大学第三届ACM程序设计竞赛 D.寻找-树上LCA(树上a到b的路径上离c最近的点)
链接:https://ac.nowcoder.com/acm/contest/558/D来源:牛客网 寻找 小猫在研究树. 小猫在研究树上的距离. 给定一棵N个点的树,每条边边权为1. Q次询问,每次 ...
- 牛客网 桂林电子科技大学第三届ACM程序设计竞赛 A.串串-后缀自动机模板题
链接:https://ac.nowcoder.com/acm/contest/558/A来源:牛客网 A.串串 小猫在研究字符串. 小猫在研究字串. 给定一个长度为N的字符串S,问所有它的子串Sl…r ...
- 桂林电子科技大学第三届ACM程序设计竞赛 G 路径
链接:https://ac.nowcoder.com/acm/contest/558/G来源:牛客网 小猫在研究树. 小猫在研究路径. 给定一棵N个点的树,每条边有边权,请你求出最长的一条路径,满足经 ...
- 分离 桂林电子科技大学第三届ACM程序设计竞赛
链接:https://ac.nowcoder.com/acm/contest/558/H 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言5242 ...
- 区间 桂林电子科技大学第三届ACM程序设计竞赛
链接:https://ac.nowcoder.com/acm/contest/558/E 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言5242 ...
- 重复 桂林电子科技大学第三届ACM程序设计竞赛
题目链接:https://ac.nowcoder.com/acm/contest/558/B import java.util.HashSet; import java.util.Scanner; p ...
- 相聚 桂林电子科技大学第三届ACM程序设计竞赛
题目链接:https://ac.nowcoder.com/acm/contest/558/D 就是求有多少块区域,用DFS就可以解决,一遇到一个1就从其开始深搜,将其所在的区域块覆灭(变为0),再遇到 ...
- 牛客网 中南林业科技大学第十一届程序设计大赛J题 二分+线段树
https://www.nowcoder.com/acm/contest/124#question 题意 找第一个不小于K的数的下标,然后对它前一个数加一 解析 我们可以维护一个最大值数组 1 ...
随机推荐
- Error: Target id is not valid ABIs: no ABIs 解决方法
问题展示: 没有ABI(Application Binary Interface)应用程序二进制接口 解决方法: 因为Android4.0以上版本Android SDK 初始安装时是不带ABIs的, ...
- 系统学习(javascript)_基础(数据类型一)
五种基本数据类型:Number,String,Boolean,Null,Undefind: 三种引用数据类型:Object,Array,Symbol: Symbol为ECMAScript6新增的数据类 ...
- Java与JS生成二维码
1.二维码概念 二维码/二维条码是用某种特定的集合图形按一定规律在平面上(二维方向上)分布的黑白相间的图形记录数据符号信息的图片. 黑线是二进制的1,空白的地方是二进制的0,通过1.0这种数据组合用于 ...
- 我应该记录一下我不太了解的一些c语言函数
当然,现在还不分类 fmemopen getpagesize()
- parseObject方法将json字符串转换成Map
String nwVal=recordDO.getWorkOrderNwVal(); HashMap<String,WxhcWorkOrderDO> nwMap=JSON.parseObj ...
- strcpy unsigned char
http://bbs.csdn.net/topics/250068243 char *strcpy(char* dest, const char *src); 用unsigned char编译会出错 ...
- go语言版本变化
The Go Project Go is an open source project developed by a team at Google and many contributors ...
- html- 头部元素
一:HTML <head> 元素 <head> 元素是所有头部元素的容器.<head> 内的元素可包含脚本,指示浏览器在何处可以找到样式表,提供元信息,等等. 以下 ...
- 神经网络中的激活函数tanh sigmoid RELU softplus softmatx
所谓激活函数,就是在神经网络的神经元上运行的函数,负责将神经元的输入映射到输出端.常见的激活函数包括Sigmoid.TanHyperbolic(tanh).ReLu. softplus以及softma ...
- mvn简单命令
导出maven项目依赖的jar包 mvn dependency:copy-dependencies -DoutputDirectory=lib 编译Java代码 mvn compile eclipse ...