Smiling & Weeping
---- 从来都知道,那是我的月亮,月光也曾照亮爱慕她的人,自以为碰到了她,天亮了,才发现...
说明:这是一道很简单的二分题目
思路:主要是在平方时很容易数据爆了,那么我们要好好思考一下如何处理题目给出的k,那我们可以确定w一定不会超过sqrt(k),那么好了,同时还有一个需要注意的点,就是上下左右都要加一个框,因此是(原有边长+2*mid)*(原有边长+2*mid)
对了,我的这种二分到最后l别忘了减一呦 (づ ̄3 ̄)づ╭❤~
Talk is cheap , show me your code ε=(´ο`*)))唉
1 #include<bits/stdc++.h> 2 using namespace std; 3 typedef long long ll; 4 int t , n; 5 int main() 6 { 7 scanf("%d",&t); 8 while(t--) 9 { 10 ll k; 11 scanf("%d",&n); 12 scanf("%lld",&k); 13 vector<ll> num(n+10); 14 for(int i = 1; i <= n; i++) 15 scanf("%lld",&num[i]); 16 ll l = 1 , r = sqrt(k); 17 while(l <= r) 18 { 19 ll temp = 0; 20 ll mid = l+r >> 1; 21 for(int i = 1; i <= n; i++) 22 { 23 temp += (2*mid+num[i])*(2*mid+num[i]); 24 if(temp < 0 || temp > k) 25 break; 26 } 27 if(temp > k) 28 r = mid-1; 29 else 30 l = mid+1; 31 } 32 printf("%lld\n",--l); 33 } 34 return 0; 35 }
有人问我学不下去了怎么办?---那就看着别人实现你的梦想
不敢向喜欢的人表白?---总会有人向你喜欢的人表白的,敢不敢真心去勇敢是一回事,即使失败了,我又怎么会念念不忘呢...
本是青灯不归客,却因浊酒恋风尘
我们下次再见ヾ( ̄▽ ̄)Bye~Bye~