题解:P10582 [蓝桥杯 2024 国 A] 最强策略家
Aiopr_2378 · · 题解
解题思路
由于先手每次只能放置两个棋子,而随着轮数增加,后手能抹去的棋子个数期望越来越高。而不难发现,每一轮中,后手一定能抹去至少一颗棋子。而在第
发现我们要找的轮数
发现这个是好解决的,对于一个
将其与应该放置的棋子个数
为什么先手按照这样决定一定有可行的出棋方式?因为棋盘在一开始就是确定的,那先手就可以在下棋之前直接确定所有下棋方案,与下棋过程无关。
参考代码
#include<iostream>
using namespace std;
int T,n;
int myceil(int x,int y){
if(x%y) return x/y+1;
else return x/y;
}
void solve(){
cin>>n;
if(n==1){
cout<<1<<endl;
return;
}
int l=1,r=n;
while(l<r){
int mid=(l+r+1)>>1;
int val=myceil(n,mid)*myceil(n,mid);
if(val>=mid+1) l=mid;
else r=mid-1;
}
cout<<l+2<<endl;
}
int main(){
cin>>T;
while(T--) solve();
return 0;
}