传送门

文章目录

  • 题意:
  • 思路:

题意:

思路:

直接算不好算,考虑二分这个中位数midmidmid。
考虑如何checkcheckcheck,这个分情况来就好了:
(1)mid>a[i].r(1)mid>a[i].r(1)mid>a[i].r,这个时候这个人永远不能到midmidmid,所以给他a[i].la[i].la[i].l。
(2)mid<a[i].l(2)mid<a[i].l(2)mid<a[i].l,这个时候给多少都>mid>mid>mid,所以给他a[i].la[i].la[i].l。
(3)a[i].l≤mid≤a[i].r(3)a[i].l\le mid\le a[i].r(3)a[i].l≤mid≤a[i].r,这个时候只需要找出几个<mid,≥mid<mid,\ge mid<mid,≥mid即可,将a[i].la[i].la[i].l从小到大排序贪心来选即可。

// Problem: D. Salary Changing
// Contest: Codeforces - Educational Codeforces Round 75 (Rated for Div. 2)
// URL: https://codeforces.com/contest/1251/problem/D
// Memory Limit: 256 MB
// Time Limit: 3000 ms
//
// Powered by CP Editor (https://cpeditor.org)//#pragma GCC optimize("Ofast,no-stack-protector,unroll-loops,fast-math")
//#pragma GCC target("sse,sse2,sse3,ssse3,sse4.1,sse4.2,avx,avx2,popcnt,tune=native")
//#pragma GCC optimize(2)
#include<cstdio>
#include<iostream>
#include<string>
#include<cstring>
#include<map>
#include<cmath>
#include<cctype>
#include<vector>
#include<set>
#include<queue>
#include<algorithm>
#include<sstream>
#include<ctime>
#include<cstdlib>
#include<random>
#include<cassert>
#define X first
#define Y second
#define L (u<<1)
#define R (u<<1|1)
#define pb push_back
#define mk make_pair
#define Mid ((tr[u].l+tr[u].r)>>1)
#define Len(u) (tr[u].r-tr[u].l+1)
#define random(a,b) ((a)+rand()%((b)-(a)+1))
#define db puts("---")
using namespace std;//void rd_cre() { freopen("d://dp//data.txt","w",stdout); srand(time(NULL)); }
//void rd_ac() { freopen("d://dp//data.txt","r",stdin); freopen("d://dp//AC.txt","w",stdout); }
//void rd_wa() { freopen("d://dp//data.txt","r",stdin); freopen("d://dp//WA.txt","w",stdout); }typedef long long LL;
typedef unsigned long long ULL;
typedef pair<int,int> PII;const int N=1000010,mod=1e9+7,INF=0x3f3f3f3f;
const double eps=1e-6;int n;
LL s;
struct Node {int l,r;bool operator < (const Node &W) const {return l<W.l;}
}a[N];
vector<Node>v;bool check(int mid) {v.clear();LL now=s;int cnt1,cnt2; cnt1=cnt2=0;for(int i=1;i<=n;i++) {if(a[i].r<mid) cnt1++,now-=a[i].l;else if(a[i].l>mid) cnt2++,now-=a[i].l;else v.pb(a[i]);}if(cnt1>n/2) return false;for(int i=0;i<v.size();i++) {if(cnt1<n/2) {cnt1++;now-=v[i].l;} else if(cnt2<n/2+1) {cnt2++;now-=mid;}}return now>=0;
}int main()
{//  ios::sync_with_stdio(false);
//  cin.tie(0);int _; cin>>_;while(_--) {scanf("%d%lld",&n,&s);for(int i=1;i<=n;i++) scanf("%d%d",&a[i].l,&a[i].r);sort(a+1,a+1+n);int l=1,r=1e9,ans;while(l<=r) {int mid=(l+r)>>1;if(check(mid)) ans=mid,l=mid+1;else r=mid-1;}printf("%d\n",ans);}return 0;
}
/**/

Educational Codeforces Round 75 (Rated for Div. 2) D. Salary Changing 二分 + check相关推荐

  1. Educational Codeforces Round 75 (Rated for Div. 2) E2. Voting (Hard Version) 贪心

    传送门 文章目录 题意: 思路: 题意: n≤2e5,m≤n,p≤1e9n\le2e5,m\le n,p\le 1e9n≤2e5,m≤n,p≤1e9 思路: 首先需要发现一些性质,假设preipre_ ...

  2. Educational Codeforces Round 75 (Rated for Div. 2)

    Preface 我要开始打Codeforces了,这是我的第二场比赛,本来以为可以快速上分的,谁知在pupil的路上越走越远.打算补题补到D题,在三天内完成. 本场战绩: Cost Time: 2 h ...

  3. Educational Codeforces Round 90 (Rated for Div. 2)(A, B, C, D, E)

    Educational Codeforces Round 90 (Rated for Div. 2) Donut Shops 思路 分三种情况: a==c/ba == c / ba==c/b这个时候两 ...

  4. Educational Codeforces Round 114 (Rated for Div. 2) (A ~ F)全题解

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Educational Codeforces Round 114 (Rated for Div. 2) ...

  5. Educational Codeforces Round 106 (Rated for Div. 2)(A ~ E)题解(每日训练 Day.16 )

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 目录 Educational Codeforces Round 106 (Rated for Div. ...

  6. Educational Codeforces Round 37 (Rated for Div. 2) 1

    Educational Codeforces Round 37 (Rated for Div. 2) A.Water The Garden 题意:Max想给花园浇水.花园可被视为长度为n的花园床,花园 ...

  7. Educational Codeforces Round 89 (Rated for Div. 2)(A, B, C, D)

    Educational Codeforces Round 89 (Rated for Div. 2) A. Shovels and Swords 思路 题意非常简单,就是得到最多的物品嘛,我们假定a, ...

  8. Educational Codeforces Round 114 (Rated for Div. 2) D. The Strongest Build 暴力 + bfs

    传送门 文章目录 题意: 思路: 题意: 你有nnn个装备槽,每个槽里面有cic_ici​个力量加成,对于每个槽只能选一个力量加成,现在给你mmm个力量组合[b1,b2,...,bn][b_1,b_2 ...

  9. Educational Codeforces Round 72 (Rated for Div. 2) D. Coloring Edges dfs树/拓扑找环

    传送门 文章目录 题意: 思路: 题意: 给你一张图,你需要给这个图的边染色,保证如果有环那么这个环内边的颜色不全相同,输出染色方案和用的颜色个数. n,m≤5e3n,m\le5e3n,m≤5e3 思 ...

最新文章

  1. [Google API](1)简介
  2. 【新星计划】MATLAB-冒号:符号详解
  3. 使用webflux提升数据导出效率
  4. Sql Server 部署SSIS包完成远程数据传输
  5. cmd xcopy 拷贝文件夹_在纯dos下用xcopy命令怎么复制文件夹
  6. 服务器响应401,服务器返回HTTP响应代码:401,URL:https
  7. I/O设备的基本概念和分类
  8. matlab 线性方程组 最小二乘解,超定方程组的最小二乘解
  9. PostgreSQL ALTER TABLE中改变数据类型时USING的用法转
  10. 贝叶斯决策及效用函数
  11. 分形之——谢尔宾斯基三角形
  12. iPhone13有3D Touch吗 3D Touch有什么用
  13. 苹果cms伪静态常见几种问题解决教程
  14. pandas 日期比较大小_pandas 对日期类型数据的处理
  15. 互联网金融产品实战——安全开发篇
  16. EffectiveJava(v3) - chapter3: Classes and Interfaces
  17. Android 文件夹管理
  18. Hadoop入门系列(二)idea配置hadoop开发环境
  19. PyQt5快速入门教程3-QtDesigner设计第一个界面
  20. 01-Spring Boot 2.0 迁移指南

热门文章

  1. COMA(二):Counterfactual Multi-Agent Policy Gradients 论文讲解
  2. 图解尼科马修斯定理,你看懂了吗?
  3. 哈哈哈,程序员没有女朋友的原因,我终于找到了!
  4. 你以为妹子穿短裙真的是为了诱惑你吗?
  5. 从头到尾彻底理解傅里叶变换算法(上)
  6. linux ntfs 速度慢,将U盘磁盘格式改成NTFS解决u盘复制速度慢问题
  7. php psr 编码规范_PHP之PSR-4规范:自动加载
  8. 11没有源码注释_我们为什么要看源码、应该如何看源码?
  9. python中with as用法_python 中关于with...as的用法
  10. python pp模块_Python模块--Pexpect