正解:换根$dp$

解题报告:

传送门!

谁能想到$9102$年了$gql$居然还没写过换根$dp$呢,,,$/kel$

考虑固定了从哪个点开始之后,以这个点作为根,蓝线只可能是直上直下的,形如"父-子-孙"这样的.

所以先考虑一个$O(n^2)$的做法,就枚举根节点,然后跑个$dfs$,设$f_{i,1}$表示点$i$是蓝线上"子"的最大答案,$f_{i,0}$表示点$i$不是蓝线上"zi"的最大答案

然后对于$f_{i,0}$,它不是"子"有两种可能,要么就子节点是"子",就会是$f_{j,1}+w$,要么就连接的不是蓝线,此时$j$也不可能是"zi"了,就会是$f_{j,0}$

然后对于$f_{i,1}$.考虑枚举哪个子节点是"孙".其他儿子和$f_{i,0}$的转移是一样的,只有点$j$的贡献从$max\{f_{j,1}+w,f_{j,0}\}$成了$f_{j,0}+w$

所以转移就

$f_{i,0}=\sum max\{f_{j,1}+w,f_{j,0}\}$

$f_{i,1}=max\{f_{i,0}-max\{f_{j,1}+w,f_{j,0}\}+f_{j,0}+w\}$

发现复杂度很假,考虑优化.

发现如果移动根对大部分节点无影响,所以考虑换根$dp$.

现在考虑把某个节点的儿子变成了父亲有什么影响$QwQ$?

首先这个子节点的贡献没了,所以$max$可能会改变,所以要记录一个次大值.同时原来的父亲变成了儿子对当前父亲产生了贡献.

考虑在第一次$dp$的时候再记录一个$g_{i,j,0/1}$表示点$i$的子树中不考虑$j$的情况下的$f_{i,0/1}$.

$g_{i,j,0}$就直接减去$max\{f_{j,1}+w,f_{j,0}\}$就成.

然后$g_{i,j,1}$就顺便维护一个次大值,如果等于最大值就赋值为次大值,否则对最大值没有影响就依然赋值为最大值就好(同样要把$max\{f_{j,1}+w,f_{j,0}\}$的贡献删去鸭$QwQ$

$code$

洛谷$P3647\ [APIO2014]$连珠线 换根$dp$的更多相关文章

  1. 【BZOJ3677】[Apio2014]连珠线 换根DP

    [BZOJ3677][Apio2014]连珠线 Description 在列奥纳多·达·芬奇时期,有一个流行的童年游戏,叫做“连珠线”.不出所料,玩这个游戏只需要珠子和线,珠子从1到礼编号,线分为红色 ...

  2. 洛谷 P3647 [APIO2014]连珠线(换根 dp)

    题面传送门 题意: 桌子上有 \(1\) 个珠子,你要进行 \(n-1\) 次操作,每次操作有以下两种类型: 拿出一个新珠子,并选择一个桌子上的珠子,在它们之间连一条红线 选择两个由红线相连的珠子 \ ...

  3. [换根DP]luogu P3647 [APIO2014]连珠线

    题面 https://www.luogu.com.cn/problem/P3647 不重复地取树中相邻的两条边,每次得分为两条边权和,问最大得分 分析 容易想到状态 f[i][0/1] 分别表示 i ...

  4. Luogu P3647 [APIO2014]连珠线

    题目 换根dp. 显然对于给定的一棵有根树,蓝线都不能拐弯. 设\(f_{u,0}\)表示\(u\)不是蓝线中点时子树内的答案,\(f_{u,1}\)表示\(u\)是蓝线中点时子树内的答案.(以\(1 ...

  5. 并不对劲的bzoj3677:p3647:[APIO2014]连珠线

    题目大意 有一种生成\(n\)个点的树的方法为: 一开始有一个点,\(n-1\)次操作,每次可以有两种操作:1.选一个点,用一条红边将它与新点连接:2.将新点放在一条红边上,新点与这条红边两端点直接的 ...

  6. 【LG3647】[APIO2014]连珠线

    [LG3647][APIO2014]连珠线 题面 洛谷 题解 首先考虑一下蓝线连起来的情况,一定是儿子-父亲-另一个儿子或者是儿子-父亲-父亲的父亲. 而因为一开始只有一个点在当前局面上,将一条红边变 ...

  7. BZOJ 3677 连珠线

    Description 在达芬奇时代,有一个流行的儿童游戏称为连珠线.当然,这个游戏是关于珠子和线的.线是红色或蓝色的,珠子被编号为\(1\)到\(n\).这个游戏从一个珠子开始,每次会用如下方式添加 ...

  8. [Bzoj3677][Apio2014]连珠线(树形dp)

    3677: [Apio2014]连珠线 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 434  Solved: 270[Submit][Status] ...

  9. 题解 [APIO2014]连珠线

    题解 [APIO2014]连珠线 题面 解析 首先这连成的是一棵树啊. 并且\(yy\)一下,如果钦定一个根, 那么这上面的蓝线都是爸爸->儿子->孙子这样的,因为像下图这样的构造不出来: ...

随机推荐

  1. 1176. Two Ends

    题目链接地址:http://soj.me/1176 题目大意:两头取数.第一个人随机取,第二个人用贪婪算法(每次都取大的),求两人取数在第一个人赢的情况下的最大分差.使用贪婪算法时,如果左右两边相等, ...

  2. [***]HZOJ 哪一天她能重回我身边

    %%%神仙题. 居然是图论,我还一直以为是二分图或者啥数据结构. 直接说正解了,将数看作节点,牌看做边,从牌的正面的数想反面连边权为1的边,反面向正面连边权为0的边(注意用到成对存储的技巧,之后会非常 ...

  3. HTML打印print

    上代码: //打印 function printme() { global_Html = document.body.innerHTML; //document.body.innerHTML = do ...

  4. 随机线性网络编码的C语言实现,实现可靠传输:实现篇(2)

    伽罗华域(2^8)乘除法的编程实现

  5. background背景色

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  6. H3C 轮询DCC和共享DCC

  7. 浅谈Transformer 及Attention网络

    1 Transformer 模型结构处理自然语言序列的模型有 rnn, cnn(textcnn),但是现在介绍一种新的模型,transformer.与RNN不同的是,Transformer直接把一句话 ...

  8. java框架之shiro

    #shiro简介 一.简介 Apache Shiro 是一个强大而灵活的开源安全框架,可以用于应用程序的身份验证,授权,会话管理和加密. Authentication:有时也简称为“登录”,这是一个证 ...

  9. Flex AIR自定义Mobile的弹出框组件

    做Flex Mobile开发的人应该知道,Flex为手机应用并没有提供弹出框组件,需要自定义. 通过查找文档.资料,我做出一个效果还算不错的弹出框组件,可以适用于手机设备上,不多讲,直接贴源码,相信对 ...

  10. Vue 用第三方的库去实现动画效果

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...