Keshi Is Throwing a Party
题意
对于第i个人的权值为i,一个人能被加入序列当且仅当,数列中大于i的数至多不超过ai,小于i的数至多不超过bi,问最多能选多少人
题解
很明显的二分答案,那么需要考虑的就是怎么写check了.直接上代码解释
bool check(int mid)//当前是否能够选取mid人
{int cnt = 0;//当前已经选取了cnt人for (int i = 1; i <= n; i++)//有小到大枚举当前已经选了cnt人,//那么要在加入一人就是cnt+1的位置且最后满足mid个人则序列一定为//1...cnt cnt+1 ....mid,因为是从小到大枚举所以左边一定小于num[i],则只只要满足下面一个不等式即可加入数列中(比当前数小的个数为cnt,比当前数大的数为mid-(cnt+1))if (a[i]>=mid-1-cnt && b[i]>=cnt) ++cnt;return cnt >= mid;
}
完整代码
#include<bits/stdc++.h>
using namespace std;
const int N = 2e5 + 10;
int a[N], b[N];
int n;
bool check(int mid)
{int cnt = 0;for (int i = 1; i <= n; i++)if (a[i]>=mid-1-cnt && b[i]>=cnt) ++cnt;return cnt >= mid;
}
void slove()
{cin >> n;for (int i = 1; i <= n; i++){cin >> a[i] >> b[i];}int l = 0, r = n;while (l < r){int mid = (l + r+1) / 2;if (check(mid))l = mid;else r = mid - 1;}cout << l << endl;}
int main()
{int t;cin >> t;while (t--){slove();}
}
Keshi Is Throwing a Party相关推荐
- Codeforces-1610 C: Keshi Is Throwing a Party
Codeforces-1610 C: Keshi Is Throwing a Party 题目传送门:Codeforces-1610 C 题目 题目截图 样例描述 题目大意 Keshi 正在举行一 ...
- Codeforces 1612C. Keshi Is Throwing a Party
Codeforces 1612C. Keshi Is Throwing a Party 思路 首先容易发现,选择的人数具有单调性,是可以二分的 假设最后答案选了 xxx 个人,那么对于一个人有影响的, ...
- Codeforces 1610C Keshi Is Throwing a Party
题意 Keshi有 nnn 个朋友,第 iii 个朋友有 iii 美元.如果邀请第 iii 个朋友做客,必须满足宴会上最多有 aia_iai 个人比他富有,最多 bib_ibi 个人比他贫穷. 问 ...
- C. Keshi Is Throwing a Party(二分答案),最/佳牛围栏,average。
题目链接 题意: 一共n个人,第 i 个人的财富度为 i,每个人有两个属性 ai 和 bi,分别表示最多能够容忍的比自己富和比自己穷的人数. 问,最多能够选多少人,使得所有人的要求都可以满足. 思路: ...
- 1610C - Keshi Is Throwing a Party 题解
题目传送门: Problem - 1610C - Codeforces 设 中的 表示你所选出的数列的已知最大长度限制,而且是只管右限制的最大长度限制. 比如说第一个数右限制是 4,那么最大长度限 ...
- 【二分】C. Keshi Is Throwing a Party
题目链接: https://codeforces.com/problemset/problem/1610/C n个盆友,第i个盆友有i块钱,小明想尽可能邀请更多的人.第i个人高兴有个条件,比他钱多的不 ...
- XGB模型训练报错 terminate called after throwing an instance of ‘std::bad_alloc‘ what()
背景:需要做XGB模型增量训练,但是因为一些原因没有得到原来的XGB模型,只有dump文件. XGB模型的dump文件是它的树结构存储为一个相对人类好理解的模型文件,但并不能被重新加载进XGB进行增量 ...
- 异常通知(After Throwing Advice)
在方法抛出异常退出时执行的通知.ApplicationContext 中在<aop:aspect> 里面使用<aop:after-throwing>元素进行声明.例如,Serv ...
- terminate called after throwing an instance of 'std::out_of_range' what(): basic_string::substr
运行时报错: terminate called after throwing an instance of 'std::out_of_range' what(): basic_string::sub ...
最新文章
- 如何为你的博客文章自动添加版权信息?
- 人脸识别国标拟规定:不得强制刷脸、预测偏好 不对14周岁以下人脸识别
- oracle配置ipv6_配置 IPv6 接口
- gbdt 算法比随机森林容易_数据挖掘面试准备(1)|常见算法(logistic回归,随机森林,GBDT和xgboost)...
- yuv图片拼接 java_java利用ffmpeg把图片转成yuv格式
- android nv21 nv12,直接进行nv21或者nv12的resize
- SPI通信协议详解(四)
- 如何利用家谱制作软件快速修谱录入
- 720度全景场景HTML5源码,直接在浏览器中运行
- C语言任意输入三个数构成三角形,随便输入三个数,看能否组成一个三角形
- ant design vue做导入导出excel
- python剪刀石头布_Python Tkinter教程系列01:剪刀石头布游戏
- 2019春第二次课程实际实验报告
- 《初等数论》:最大公因数与最小公倍数
- 计算机硬件检测标准模板,计算机硬件性能检测相关实验模板.doc
- 外卖跑腿app源码,小程序上点餐+送货二合一
- hibernate先删除数据,紧接着执行插入时的异常解决之道——中间不能调用flush()、clear()等方法...
- 利用LibreOffice进行WORD转PDF
- 盘式滑环对材料的要求
- 中国纳米抛光浆料行业未来产销需求与投资策略建议报告2022版