关于A题做法
  • 板块学术版
  • 楼主SalomeJLQ
  • 当前回复17
  • 已保存回复17
  • 发布时间2020/10/4 19:29
  • 上次更新2023/11/5 12:01:51
查看原帖
关于A题做法
246979
SalomeJLQ楼主2020/10/4 19:29

我的做法只有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;
}
2020/10/4 19:29
加载中...