链接:https://ac.nowcoder.com/acm/contest/558/C
来源:牛客网

小猫在研究二元组。
小猫在研究最大值。
给定N个二元组(a1,b1),(a2,b2),…,(aN,bN),请你从中选出恰好K个,使得ai的最小值与bi的最小值之和最大。
请输出ai的最小值与bi的最小值之和

输入描述:

  1. 第一行两个正整数N,K,表示二元组数量与需要选的数量。
  2.  
  3. 接下来N行,第i行两个正整数ai,bi

输出描述:

  1. 一行一个正整数,表示最大的a_i的最小值与b_i的最小值之和。
示例1

输入

复制

  1. 3 2
  2. 1 1
  3. 2 3
  4. 3 1

输出

复制

  1. 3

备注:

  1. 1N10

5

  1. ,1a

i

  1. ,b

i

  1. 10

9

一开始以为是dp,最后发现是贪心。

按照x从大到小排序,然后优先队列维护对应的y,维护y的最小值。

因为x是排好序的,所以相当于降了一维。

先删再进 和先进再删都是可以的。虽然删除的可能是x和y都最小的,但是x并没有出去,但是不影响,因为要的是最大值,所以不会对结果造成影响。

代码1(先进再删):

  1. //C
  2. #include<bits/stdc++.h>
  3. using namespace std;
  4. typedef long long ll;
  5. const int maxn=1e5+;
  6.  
  7. struct node{
  8. ll a,b;
  9.  
  10. friend bool operator<(node a,node b){
  11. return a.a>b.a;
  12. }
  13.  
  14. }x[maxn];
  15.  
  16. int main()
  17. {
  18. ll n,k;
  19. cin>>n>>k;
  20. for(int i=;i<=n;i++){
  21. cin>>x[i].a>>x[i].b;
  22. }
  23. sort(x+,x++n);
  24. priority_queue<ll,vector<ll>,greater<ll> > q;
  25. for(int i=;i<=k;i++){
  26. q.push(x[i].b);
  27. }
  28. ll y=q.top();
  29. ll ans=x[k].a+y;
  30. for(int i=k+;i<=n;i++){
  31. q.push(x[i].b);q.pop();
  32. y=q.top();
  33. if(ans<y+x[i].a) ans=y+x[i].a;
  34. }
  35. cout<<ans<<endl;
  36. return ;
  37. }

代码2(先删再进):

  1. //C
  2. #include<bits/stdc++.h>
  3. using namespace std;
  4. typedef long long ll;
  5. const int maxn=1e5+;
  6.  
  7. struct node{
  8. ll a,b;
  9.  
  10. friend bool operator<(node a,node b){
  11. return a.a>b.a;
  12. }
  13.  
  14. }x[maxn];
  15.  
  16. int main()
  17. {
  18. ll n,k;
  19. cin>>n>>k;
  20. for(int i=;i<=n;i++){
  21. cin>>x[i].a>>x[i].b;
  22. }
  23. sort(x+,x++n);
  24. priority_queue<ll,vector<ll>,greater<ll> > q;
  25. for(int i=;i<k;i++){
  26. q.push(x[i].b);
  27. }
  28. ll ans=-;
  29. for(int i=k;i<=n;i++){
  30. q.push(x[i].b);
  31. ll y=q.top();
  32. ans=max(ans,y+x[i].a);
  33. q.pop();
  34. }
  35. cout<<ans<<endl;
  36. return ;
  37. }

牛客网 桂林电子科技大学第三届ACM程序设计竞赛 C.二元-K个二元组最小值和最大-优先队列+贪心(思维)的更多相关文章

  1. 牛客网 桂林电子科技大学第三届ACM程序设计竞赛 G.路径-带条件的树的直径变形-边权最大,边数偶数的树上的最长路径-树形dp

    链接:https://ac.nowcoder.com/acm/contest/558/G 来源:牛客网 路径 小猫在研究树. 小猫在研究路径. 给定一棵N个点的树,每条边有边权,请你求出最长的一条路径 ...

  2. 牛客网 桂林电子科技大学第三届ACM程序设计竞赛 D.寻找-树上LCA(树上a到b的路径上离c最近的点)

    链接:https://ac.nowcoder.com/acm/contest/558/D来源:牛客网 寻找 小猫在研究树. 小猫在研究树上的距离. 给定一棵N个点的树,每条边边权为1. Q次询问,每次 ...

  3. 牛客网 桂林电子科技大学第三届ACM程序设计竞赛 A.串串-后缀自动机模板题

    链接:https://ac.nowcoder.com/acm/contest/558/A来源:牛客网 A.串串 小猫在研究字符串. 小猫在研究字串. 给定一个长度为N的字符串S,问所有它的子串Sl…r ...

  4. 桂林电子科技大学第三届ACM程序设计竞赛 G 路径

    链接:https://ac.nowcoder.com/acm/contest/558/G来源:牛客网 小猫在研究树. 小猫在研究路径. 给定一棵N个点的树,每条边有边权,请你求出最长的一条路径,满足经 ...

  5. 分离 桂林电子科技大学第三届ACM程序设计竞赛

    链接:https://ac.nowcoder.com/acm/contest/558/H 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言5242 ...

  6. 区间 桂林电子科技大学第三届ACM程序设计竞赛

    链接:https://ac.nowcoder.com/acm/contest/558/E 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言5242 ...

  7. 重复 桂林电子科技大学第三届ACM程序设计竞赛

    题目链接:https://ac.nowcoder.com/acm/contest/558/B import java.util.HashSet; import java.util.Scanner; p ...

  8. 相聚 桂林电子科技大学第三届ACM程序设计竞赛

    题目链接:https://ac.nowcoder.com/acm/contest/558/D 就是求有多少块区域,用DFS就可以解决,一遇到一个1就从其开始深搜,将其所在的区域块覆灭(变为0),再遇到 ...

  9. 牛客网 中南林业科技大学第十一届程序设计大赛J题 二分+线段树

    https://www.nowcoder.com/acm/contest/124#question 题意  找第一个不小于K的数的下标,然后对它前一个数加一 解析   我们可以维护一个最大值数组  1 ...

随机推荐

  1. RHEL-7.0重置root密码

    RHCE考试第一个环节就是重置root密码,然而7系列与6系列又存在着很大的不同.以下为RHEL-7.0系统对root密码重置的步骤! 1.开机出现引导菜单时按下e键    2.找到linux16行, ...

  2. 【leetcode 简单】 第八十一题 4的幂

    给定一个整数 (32 位有符号整数),请编写一个函数来判断它是否是 4 的幂次方. 示例 1: 输入: 16 输出: true 示例 2: 输入: 5 输出: false 进阶: 你能不使用循环或者递 ...

  3. Python文件操作-文件的增删改查

    需求:对文件进行增删改查 由于时间原因,本次代码没有增加任何注释,如有疑问,请联系编辑者:闫龙 其实我也是醉了,看着这些个代码,我脑袋也特么大了,没办法,大神说了,不让用新知识,只可以使用学过的,所以 ...

  4. vue组件之间传值方式解析

    vue组件之间传值方式解析一.父组件传到子组件 1.父组件parent代码如下: <template> <div class="parent"> <h ...

  5. APScheduler API -- apscheduler.triggers.date

    apscheduler.triggers.date API Trigger alias for add_job(): date class apscheduler.triggers.date.Date ...

  6. Python Dict用法

    Operation Result len(a) the number of items in a 得到字典中元素的个数 a[k] the item of a with key k 取得键K所对应的值 ...

  7. MUI上拉加载下拉刷新

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  8. IE安全系列之——RES Protocol

    IE安全系列之--RES Protocol res Protocol用于从一个文件里面提取指定资源.语法为:res://sFile[/sType]/sID 各Token含义: sfile:百分号编码. ...

  9. 【codeforces】940F题解

    CF Round #466的最后一题,颇有难度,正解是带修改莫队算法. [题意] 给定一个长度为\(n\)的数组\(a\),并且要求执行\(q\)个操作,有两种不同的操作: ①询问一个区间\([l,r ...

  10. 【codeforces】【比赛题解】#855 Codefest 17

    神秘比赛,以<哈利波特>为主题……有点难. C题我熬夜切终于是写出来了,可惜比赛结束了,气啊. 比赛链接:点我. [A]汤姆·里德尔的日记 题意: 哈利波特正在摧毁神秘人的分灵体(魂器). ...