当前位置:网站首页>C. Keshi Is Throwing a Party- Codeforces Global Round 17
C. Keshi Is Throwing a Party- Codeforces Global Round 17
2022-08-03 21:03:00 【秦小咩】
C. Keshi Is Throwing a Party
time limit per test
1 second
memory limit per test
256 megabytes
input
standard input
output
standard output
Keshi is throwing a party and he wants everybody in the party to be happy.
He has nn friends. His ii-th friend has ii dollars.
If you invite the ii-th friend to the party, he will be happy only if at most aiai people in the party are strictly richer than him and at most bibi people are strictly poorer than him.
Keshi wants to invite as many people as possible. Find the maximum number of people he can invite to the party so that every invited person would be happy.
Input
The first line contains a single integer tt (1≤t≤104)(1≤t≤104) — the number of test cases. The description of the test cases follows.
The first line of each test case contains a single integer nn (1≤n≤2⋅105)(1≤n≤2⋅105) — the number of Keshi's friends.
The ii-th of the following nn lines contains two integers aiai and bibi (0≤ai,bi<n)(0≤ai,bi<n).
It is guaranteed that the sum of nn over all test cases doesn't exceed 2⋅1052⋅105.
Output
For each test case print the maximum number of people Keshi can invite.
Example
input
Copy
3 3 1 2 2 1 1 1 2 0 0 0 1 2 1 0 0 1
output
Copy
2 1 2
Note
In the first test case, he invites the first and the second person. If he invites all of them, the third person won't be happy because there will be more than 11 person poorer than him.
=========================================================================
二分和贪心,二分枚举选的个数,判定函数里面运用贪心思想,能选就选。选一个的话,如果剩下的k-cnt-1个少于a[i],并且已经被选的 cnt<=b[i],那么就可以选该物品。
#include <iostream>
# include<algorithm>
# include<cstring>
using namespace std;
typedef long long int ll;
ll a[200000+10],b[200000+10];
int n;
bool check(ll mid)
{
int now=0;
for(int i=1;i<=n;i++)
{
if(mid-now-1<=a[i]&&now<=b[i])
now++;
if(now>=mid)
return 1;
}
return 0;
}
int main()
{
int t;
cin>>t;
while(t--)
{
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i]>>b[i];
}
int left=0,right=n;
while(left<=right)
{
int mid=(left+right)>>1;
if(check(mid))
left=mid+1;
else
right=mid-1;
}
cout<<right<<endl;
}
return 0;
}
边栏推荐
猜你喜欢
随机推荐
How can a cloud server safely use local AD/LDAP?
ES6 deconstruction assignment - array object deconstruction and deconstruction
开源一夏 |如何优化线上服务器
leetcode 2119. Numbers reversed twice
15年软件架构师经验总结:在ML领域,初学者踩过的五个坑
直播平台怎么搭建,针对输入框的各种组件
5 款漏洞扫描工具:实用、强力、全面(含开源)
Likou 59 - Spiral Matrix II - Boundary Judgment
9月1日起我国给予多哥等16国98%税目产品零关税待遇
leetcode 448. Find All Numbers Disappeared in an Array 找到所有数组中消失的数字(简单)
Power button 206 - reverse list - the list
StoneDB 开源社区月刊 | 202207期
LeetCode_位数统计_中等_400.第 N 位数字
迪赛智慧数——柱状图(多色柱状图):2021年我国城市住户存款排名
Markdown语法
解决This application failed to start because no Qt platform plugin could be initialized的办法
《富爸爸,穷爸爸》思维导图和学习笔记
Abs (), fabs () and LABS ()
3种圆形按钮悬浮和点击事件
伪标签汇总









