社区讨论

0pts求条,马蜂优良

P4653[CEOI 2017] Sure Bet参与者 2已保存回复 4

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
4 条
当前快照
1 份
快照标识符
@mlhco1je
此快照首次捕获于
2026/02/11 09:27
上周
此快照最后确认于
2026/02/12 19:55
7 天前
查看原帖
我很菜喵,思路是没有的喵
CPP
#include<bits/stdc++.h>
#define ll long long
#define db double
#define endl '\n'
#define int register int
#define AKIOI ios::sync_with_stdio(false);cin.tie(0),cout.tie(0)
#define AKNOI return 0;
#define db double
using namespace std;
ll n;
db a[100005],b[100005],suma[100005],sumb[100005],l,r,mid,ans;
bool check(db x){
	ll sa,sb;
	for(int i=n;i>=1;i--){
		bool f=0;
		if(sa<x){
			if(a[i]>1){
				sa+=a[i]-1;
				sb-=1;
			}
			else return false;
			f=1;
		}
		if(sb<x){
			if(b[i]>1){
				sa-=1;
				sb+=b[i]-1;
			}
			else return false;
			f=1;
		}
		if(!f){
			return true;
		}
	}
}
signed main(){
	AKIOI;
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>a[i]>>b[i];
	}
	sort(a+1,a+n+1);
	sort(b+1,b+n+1);
	for(int i=1;i<=n;i++){
		suma[i]=suma[i-1]+a[i];
		sumb[i]=sumb[i-1]+b[i];
	}
	const double EPS=1e-6;
	l = 1;
	r = n;
	while(r-l>EPS){
		mid=(l+r)/2;
		if(check(mid)){
			l=mid+1;
			ans=mid;
		}
		else r=mid-1;
	}
	cout<<ans;
	AKNOI;
}

回复

4 条回复,欢迎继续交流。

正在加载回复...