luogu P2609 [ZJOI2012]数列

题面传送门
发现这道题主要不是思维难,而是高精难打。还难卡常
\(2i\)的显然很好处理,考虑\(2i+1\)怎么做
首先设两个分支为\(2k-1,2k\),那么会衍生出三个分支\(k-1,k,k\)容易发现仍然只有两个本质不同。
那么只要暴力递归下去判个重即可。
但是问题是这样\(O(Tlog^3n)\)过不去。
考虑化简一下不用map,直接递推即可。时间复杂度\(O(Tlog^2n)\)
高精要压位才能过去。
代码实现:

//高精就不贴了
int main() {
	freopen("1.in","r",stdin);
	scanf("%d",&t);
	while(t--){
		cin>>a;r=e;l=d;
		while(a!=0){
			//cout<<a<<endl;
			if(a%c==d) r+=l;
			else l+=r;
			a/=c;
		}
		cout<<r<<endl;
	}
}
上一篇:花书读书笔记(十二)-线性因子模型


下一篇:完全二叉树的数组表示,为什么节点i子节点坐标为2i+1,2i+2