B. Points on Plane
分析:通过前面几个样例画图可知,每次放的点都是在一个正方形上的。
2~4个的时候我们就会选择(0,1),(1,0),(0,-1),(-1,0)这个正方形,边长为2,花费为1
5~9个的时候选择(0,2),(1,1)(2,0)(1,-1),(0,-2),(-1,-1),(-2,0),(-1,1),(0,0)这个正方形,
答案为边长减一,又因为结果有序,二分出这个结果。
注意:数据比较大要用__int128,同时标准要用G++20。
#include<bits/stdc++.h>
#define LL long long
using namespace std;
const int N=2e5+10;
int a[N];
void slove(){
LL n;
cin>>n;
LL l=1,r=1e18;
while(l<r){
LL mid=(l+r)>>1;
if((__int128)mid*mid>=n)r=mid;
else l=mid+1;
}
cout<<l-1<<endl;
}
signed main(){
cin.tie(0);
cout.tie(0);
ios::sync_with_stdio(0);
int t;
cin>>t;
while(t--){
slove();
}
return 0;
}