这个题的2分为什么这么写???
查看原帖
这个题的2分为什么这么写???
837535
lrhtom楼主2023/7/25 14:49

比赛wa2发改后ac 不是l=mid+1和r=mid-1吗为什么这里直接mid???

#include<iostream>
#include<set>
#include<stack>
#include<map>
#include<unordered_map>
#include<unordered_set>
#include<cmath>
#include<cstring>
#include<string>
#include<vector>
#include<queue>
#include<cstdio>
#include<algorithm>
#define yh ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
#define ll long long
using namespace std;
typedef pair<int,int> pii;
const ll szed=200010;
ll a[szed],n,c;
inline ll ct(ll num){
	ll aws=0;
	for(ll i=1;i<=n;i++){
		aws+=(a[i]+num*2)*(a[i]+num*2);
		if(aws>c){
			return c+1;
		}
	}
	return aws;
}
void solve() {
	 ll num,aws=0;
	 cin>>n>>c;
	 for(int i=1;i<=n;i++){
	 	cin>>a[i];
	 }
	ll l=0,r=2000000000;
	while(l<r) {
		ll mid=l+(r-l)/2,cp=ct(mid);
		if(cp<c) {
			l=(mid);
		} else if(cp>c) {
			r=(mid);
		} else {
			cout<<mid<<endl;return ;
		}
	}
}
int main() {
	yh;
	int t;
	cin>>t;
	while(t--)solve();
	return 0;
}
2023/7/25 14:49
加载中...