隐含条件:输出字典序最小的前序遍历

P1040 [NOIP2003 提高组] 加分二叉树

不然很多方法需要spj。。。 本人就被字典序卡成60分
by Roviky @ 2019-11-13 21:47:23


## 哪位大佬看一下问题呀 ## 总是输出不出来 ```cpp #include<iostream> #include<cstdio> #include<stdio.h> #include<algorithm> #include<cmath> #include<vector> #include<queue> #include<stack> #include<map> #include<cstring> #include<string.h> #include<iomanip> int n,a[40],root[40][40]; long long dp[40][40]; long long dfs(int l,int r) { if(l>r)return 1; if(dp[l][r])return dp[l][r]; long long maxn=0; for(int i=l;i<=r;i++) { long long t=dfs(l,i-1)*dfs(i+1,r)+a[i]; if(t>maxn) { maxn=t; root[l][r]=i; } } return dp[l][r]=maxn; } void dg(int l,int r) { if(l>r)return; std::cout<<root[l][r]<<" "; dg(l,root[l][r]-1); dg(root[l][r]+1,r); } int main() { std::scanf("%d",&n); for(int i=1;i<=n;i++) { std::scanf("%d",a[i]); dp[i][i]=a[i]; root[i][i]=i; } std::cout<<dfs(1,n)<<"\n"; dg(1,n); return 0; } ```
by BotTleR @ 2020-02-21 13:17:39


谢谢大佬提醒 ~~我就知道讨论区一定有和我一样的人~~
by 尹昱钦 @ 2020-02-23 00:34:00


我也是..... ~~可是不知道怎么改~~
by lzqy_ @ 2020-03-15 12:14:24


感谢大佬
by code_hunter @ 2020-04-17 12:01:28


建议改题目. @[CCF_NOI](/user/19)
by qjyzLfy @ 2020-04-19 20:49:21


|