当前位置:网站首页>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;
}
边栏推荐
猜你喜欢
随机推荐
XSS holes emersion
leetcode 072. Finding Square Roots
独立站卖家在哪些平台做社交媒体营销效果最好?
leetcode 136. Numbers that appear only once (XOR!!)
leetcode 剑指 Offer 15. 二进制中1的个数
系统运维系列 之CSV文件读取时内容中包含逗号的处理方法
LeetCode_位数统计_中等_400.第 N 位数字
tidyverse based on data.table?
【使用 Pytorch 实现入门级的人工神经网络】
如何使用 Jmeter获取登录token并设置为全局变量?
2022年1~7月语音合成(TTS)和语音识别(ASR)论文月报
卷起来!阿里高工携 18 位高级架构师耗时 57 天整合的 1658 页面试总结
CheckBox列表项选中动画js特效
敏捷交付的工程效能治理
XSS practice - cycle and two cycle problem at a time
Power button - 203 - remove the list elements linked list
buildscript和allprojects的作用和区别是什么?
直播小程序源码,UI自动化中获取登录验证码
华为设备配置VRRP与BFD联动实现快速切换
Zero trust, which has been popular for more than ten years, why can't it be implemented?