题解 P5551 【Chino的树学】

· · 题解

这题真的太水了,直接递归输入都不会被卡掉

然后直接暴力取最大值即可

```cpp #include<bits/stdc++.h> using namespace std; #define int long long inline int read(){//快读 int X=0;bool d=0;char ch=0; while(!isdigit(ch)) d|=ch=='-',ch=getchar(); while(isdigit(ch)) X=(X<<3)+(X<<1)+(ch^48),ch=getchar(); return d?-X:X; } short n=read(); int dfs(int x,short dep){ if(dep==n) return read();//输入完毕,退出递归 return read()+max(dfs(x<<1,dep+1),dfs(x<<1|1,dep+1));//取最大 } signed main(){ cout<<dfs(1,1); return 0; } ```