洛谷P1040 加分二叉树题解

dp即可

\(f[i][j]\)表示i到j的加分

相当于区间dp了

#include<cstdio> using namespace std; int v[50]; int f[55][55]; int root[55][55]; void print(int l,int r) { if(l>r)return ; if(l==r) { printf("%d ",r); return ; } int tmp=root[l][r]; printf("%d ",tmp); print(l,tmp-1); print(tmp+1,r); } int main() { int n; scanf("%d",&n); for(int i=1;i<=n;i++) { scanf("%d",&v[i]); f[i][i]=v[i]; f[i][i-1]=1; } for(int i=n-1;i>=1;i--) { for(int j=i+1;j<=n;j++) { for(int k=i;k<=j;k++) { if(f[i][j]<(f[i][k-1]*f[k+1][j]+f[k][k]))//k为根节点 { f[i][j]=f[i][k-1]*f[k+1][j]+f[k][k]; root[i][j]=k; } } } } printf("%d\n",f[1][n]); print(1,n);//输出中序遍历 return 0; } 
全部评论

相关推荐

若怜君欢:驾驶证去掉吧,PPT啥的也去掉,本硕课程去掉,导师和研究方向去掉;加入本硕排名(好才写);技能栏加入你会的那些控制算法和滤波算法,这个比你会啥啥啥软件更有用;获奖写上去,奖学金啊,有没有专利啊之类的 电机和硬件这一块,属于传统制造业,制造业实习并不多。多投一些攒攒经验,有实习最好,没有也不需要焦虑(制造业实习其实除了转正,没多大用处) 最后,划重点,等秋招开始后,把你所有社交软件都发一份简历上去,并经常更新,找人内推你!
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
昨天 20:55
因为业务不是喜欢的,所以就没去,现在实习工作也有很多dirtywork,很后悔,怎么能舔回这个offer啊
flmz_Kk:试一试跟hr舔回来,不过保不齐米的活也有很多dirtywork,只能说不要美化自己没走过的路
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务