我的做法只有80分。
做法是:先把这个圈的其中一个位子占了,把n--
,然后断环成链。然后每次把这个序列分成左右两段递归。感觉时间复杂度真的不高啊(虽然我分析不出来),为什么会TLE。另外,这数据范围怎么就爆系统栈了呢……
#include<bits/stdc++.h>
using namespace std;
long long n,k,ans;
void dg(int ggg){
if(ggg<=2*k)return;
if(ggg%2==0){dg(ggg/2-1);dg(ggg/2);}
else if(ggg%2==1){dg(ggg/2);dg(ggg/2);}
ans++;
}
int main(){
cin>>n>>k;
ans++;n--;
if(n%2==0){dg(n/2-1);dg(n/2);}
else if(n%2==1){dg(n/2);dg(n/2);}
ans++;
cout<<ans;
return 0;
}