题解:P14660 你不孤单,我们都在
fish_love_cat · · 题解
最多操作一次,所以所有不合法的人都需要参与活动。
我们不妨先把他们全部扔进来。
然后平均数一定要小于所有参与活动的人的
于是考虑反悔贪心。
我们按照
然后把
插完我们把队头那些会使平均数变大的点踢出去。
动态维护这个过程的平均数,显然对于每一个
如果存在某一时刻能够满足条件,那么就直接返回 YES,否则返回 NO。
做完了。
#include<bits/stdc++.h>
#define int long long
using namespace std;
struct fish{
int a,b;
}a[100005];
bool cmpb(fish x,fish y){
return x.b>y.b;
}
void solve(){
int n;
cin>>n;
int sum=0,cnt=0,qwq=1e9;
for(int i=1;i<=n;i++){
cin>>a[i].a>>a[i].b;
if(a[i].a>a[i].b)
sum+=a[i].a,cnt++,qwq=min(qwq,a[i].b);
}
sort(a+1,a+1+n,cmpb);
priority_queue<int>q;
for(int i=1;i<=n;i++){
if(a[i].a>a[i].b)continue;
if((sum+a[i].a)*cnt>sum*(cnt+1))continue;
qwq=min(qwq,a[i].b);
sum+=a[i].a;
cnt++;
q.push(a[i].a);
while(cnt>1&&(sum-q.top())*cnt<sum*(cnt-1)){
cnt--;
sum-=q.top();
q.pop();
}
if(sum<=qwq*cnt){
puts("YES");
return;
}
}
puts("NO");
}
signed main(){
int t;
cin>>t;
while(t--)solve();
return 0;
}
// 起初,缇亚忒只是觉得那好厉害。
// 缇亚忒一直仰望着那道让她觉得帅气而耀眼的背影。她怀有憧憬。
// 后来,当缇亚忒自己的手脚开始成长时,那份憧憬变成了希望。自己迟早会前往战场。到时候,她肯定会跟那位珂朵莉学姐一样,变成既杰出又帅气,而且最顶尖也最强的妖精。