CF195B After Training题解
Yousa_Ling · · 题解
不难发现,因为一开始所有框都是空的,所以第一次球总是放在最中间的框,此时需要分
当
当
因为 C++ 除法自动向下取整,所以中间值 (m+1)/2即可。
接下来直接按照左右左右的方式放,答案 ans=m-ans,从左边移到右边是ans=m-ans+1。
代码:
#include<bits/stdc++.h>
int n,m,ans;
using namespace std;
int main()
{
cin>>n>>m;
int mid=(m+1)/2;//中间值
ans=mid;//第一个答案一定是中间值
for(int i=0;i<n;i++){
cout<<ans<<endl;//输出答案
if(ans==m)ans=mid;//当答案和m相同时答案是中间值
else if(ans<mid)ans=m-ans+1;//当答案比中间值小(在左边)时要移到右边
else ans=m-ans;//否则移到左边
}
return 0;
}