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

这篇具有很好参考价值的文章主要介绍了luogu_P1040 [NOIP2003 提高组] 加分二叉树。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

P1040 [NOIP2003 提高组] 加分二叉树 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

题意:给你一颗中序遍历为1到n的二叉树,和每个节点的val。树的值=左子树的值×右子树的值+根的val,空树值为1,求整个树最大值和这个值树的前序遍历。

题解:区间dp。dp[l][r]表示最大值,root[l][r]表示最大值的根,枚举区间然后枚举根,根据题目中的计算公式搞最大值。

  树形dp。一样的dp[l][r]表示子树罢了。

  多想想,一步步讨论就好了,关键是找能做出答案的状态表示再想转移方程。文章来源地址https://www.toymoban.com/news/detail-427017.html

int n,a[N],dp[N][N],rt[N][N];
void pre_ans(int l,int r){
    if(l>r) return;
    cout<<rt[l][r]<<" ";
    pre_ans(l,rt[l][r]-1);
    pre_ans(rt[l][r]+1,r);
}
void solve(){
    cin>>n;
    rep(i,1,n+1) cin>>a[i],dp[i][i]=a[i],rt[i][i]=i;
    for(int len=1;len<=n;len++){
        for(int l=1;l+len-1<=n;l++){
            int r = l+len-1;
            dp[l][r] = dp[l + 1][r] + dp[l][l];//左子树为空
            rt[l][r]=l;
            for(int k=l+1;k<r;k++){//左子树的节点数  枚举子树的根
                if(dp[l][r]<dp[l][k-

到了这里,关于luogu_P1040 [NOIP2003 提高组] 加分二叉树的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 加分二叉树

    设一个 (n) 个节点的二叉树 (text{tree}) 的中序遍历为 ((1,2,3,ldots,n)) ,其中数字 (1,2,3,ldots,n) 为节点编号。每个节点都有一个分数(均为正整数),记第 (i) 个节点的分数为 (d_i) , (text{tree}) 及它的每个子树都有一个加分,任一棵子树 (text{subtree}) (也包含 (tex

    2024年02月06日
    浏览(33)
  • C++---区间DP---加分二叉树(每日一道算法2023.4.28)

    题目: 设一个 n 个节点的二叉树 tree 的中序遍历为(1,2,3,…,n),其中数字 1,2,3,…,n 为节点编号。 每个节点都有一个分数(均为正整数),记第 i 个节点的分数为 di,tree 及它的每个子树都有一个加分,任一棵子树 subtree(也包含 tree 本身)的加分计算方法如下: subtree的左

    2024年02月06日
    浏览(32)
  • NOIP2003普及组复赛T2:数字游戏

    题目链接:NOIP2003普及组复赛T2 - 数字游戏 丁丁最近沉迷于一个数字游戏之中。这个游戏看似简单,但丁丁在研究了许多天之后却发觉原来在简单的规则下想要赢得这个游戏并不那么容易。游戏是这样的,在你面前有一圈整数(一共 n n n 个),你要按顺序将其分为 m m m 个部分

    2024年02月09日
    浏览(40)
  • P1012 [NOIP1998 提高组] 拼数

    设有 �n 个正整数 �1…��a1​…an​,将它们联接成一排,相邻数字首尾相接,组成一个最大的整数。 第一行有一个整数,表示数字个数 �n。 第二行有 �n 个整数,表示给出的 �n 个整数 ��ai​。 一个正整数,表示最大的整数 输入 #1 复制 输出 #1 复制 输入 #

    2023年04月08日
    浏览(34)
  • P1013 [NOIP1998 提高组] 进制位

    著名科学家卢斯为了检查学生对进位制的理解,他给出了如下的一张加法表,表中的字母代表数字。 例如: 其含义为: �+�=�L+L=L,�+�=�L+K=K,�+�=�L+V=V,�+�=�L+E=E �+�=�K+L=K,�+�=�K+K=V,�+�=�K+V=E,�+�=��K+E=KL ⋯⋯ �+�=��E+E=KV 根据这些规则可推

    2023年04月08日
    浏览(34)
  • P1967 [NOIP2013 提高组] 货车运输 题解

    原题地址 由于题目要求的是使两点之间的最小边权最大,所以可以构造最大生成树(最大生成树一定是最大瓶颈生成树,而瓶颈生成树上两点之间的路径,在原图中的所有路径中,最小边权仍然最大,即满足题目要求,详见 https://oi-wiki.org/graph/mst/#瓶颈生成树 ),答案为最大

    2024年04月08日
    浏览(38)
  • P1125 [NOIP2008 提高组] 笨小猴——C++

    笨小猴的词汇量很小,所以每次做英语选择题的时候都很头疼。但是他找到了一种方法,经试验证明,用这种方法去选择选项的时候选对的几率非常大! 这种方法的具体描述如下:假设 maxn text{maxn} maxn 是单词中出现次数最多的字母的出现次数, minn text{minn} minn 是单词中出

    2024年02月02日
    浏览(37)
  • [NOIP2001 提高组] 一元三次方程求解(洛谷)

    有形如: a x 3 + b x 2 + c x + d = 0 a x^3 + b x^2 + c x + d = 0 a x 3 + b x 2 + c x + d = 0 这样的一个一元三次方程。给出该方程中各项的系数( a , b , c , d a,b,c,d a , b , c , d 均为实数),并约定该方程存在三个不同实根(根的范围在 − 100 -100 − 100 至 100 100 100 之间),且根与根之差的绝对值

    2024年01月22日
    浏览(41)
  • #P1007. [NOIP2007提高组] 矩阵取数游戏

    帅帅经常跟同学玩一个矩阵取数游戏:对于一个给定的 n times mn×m 的矩阵,矩阵中的每个元素 a_{i,j}ai,j​ 均为非负整数。游戏规则如下: 每次取数时须从每行各取走一个元素,共 nn 个。经过 mm 次后取完矩阵内所有元素; 每次取走的各个元素只能是该元素所在行的行

    2024年02月15日
    浏览(42)
  • 【Java贪心】P5019 [NOIP2018 提高组] 铺设道路

    NOIP2018 提高组 D1T1 春春是一名道路工程师,负责铺设一条长度为 n n n 的道路。 铺设道路的主要工作是填平下陷的地表。整段道路可以看作是 n n n 块首尾相连的区域,一开始,第 i i i 块区域下陷的深度为 d i d_i d i ​ 。 春春每天可以选择一段连续区间 [ L , R ] [L,R] [ L , R ] ,填

    2023年04月11日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包