正解:树形dp

解题报告:

大概是第一道NOI的题目?有点激动嘻嘻

然后先放个传送门

先大概港下这题的题意是啥qwq

大概就是给一棵树,然后可以选若干条链把链上的所有边的边权变成0,但是这些链不能有交集,问所有点到根的边权最大值的最小值是多少,然后有几种这样的方案

大概解释下我们是怎么搞出来这个题意的...我发现我语文巨差好几道题死于无法理解题意了?药丸药丸QAQQQ

就是首先看懂它说每个城市最多和一个左边的城市相连,那我们把它横过来看就相当于说最多和一个上面的城市相连,就是棵树咯,那就先把无解判掉,就如果m!=n-1就无解了咯(话说它还给了句说经度不同?然而我没懂这句话暗示了什么我就没放上来了,先放着,存疑qwq

然后就是颗树,它又说了一堆,还是可以理解的玩意儿,说能把一些路变成0啥的,不详说了大概这个意思

然后又一个点"每个城市在每个序列中最多出现一次""每个城市最多只能出现在一条规划路线中",好滴然后就能明白,就是要扣一些链并且链不能有公共部分咯

好那我们总算把题目理清了QAQ开始讲题QAQ

其实这题dp,没有那么难?对我而言感觉没有前面刚肝的pocky游戏那么难搞欸? 就是想我肯定还是想不出来的,但是理解还是相对比较好理解的呢(umm也可能是我状压学太差了QAQ)

感觉没有什么好港的鸭。。。就直接进入正题讲这个dp趴

就是最最普通的序列dp鸭,f[i][j][0/1/2]:到第i个点了,当前最大边权和=j,连了0/1/2个崽的方案数量,然后方案数这种东西显然可以乘法原理处理转移一波

就是直接枚举j,通过一些玄学计算x(晚上来解释qwq)可以等到j小于等于10的所以直接枚举就好qwq

(关于这个j的计算,最简单的可以直接树链剖分知识得小于等于20,但是如果优秀一点儿,可以想到三叉树balabala的然后就可以得到j小于等于10的呢?umm反正这两种我都不会呢,,,等学了树链剖分再来解释趴qwq)

然后还是详细解释下状态转移方程qwq

就分类讨论鸭,考虑选择 连这个崽 和 不连这个崽,转移到f[i][j][0/1/2]

设这个点是u然后枚举到的崽是v

可以考虑到,如果连这个崽,那这个崽的maxans(也就是j)就不会被更新,否则就会被更新,所以就从j和j-1转移来嘛

还一个就是如果我选了这个崽那这个崽是最多只能连一个崽的,但是如果没选当然是没限制的012都成qwq

那就 f[u][j][2]=f[u][j][2]*(f[v][j-1][0]+f[v][j-1][1]+f[v][j-1][2])+f[u][j][1]*(f[v][j][0]+f[v][j][1])

   f[u][j][1]=f[u][j][1]*(f[v][j-1][0]+f[v][j-1][1]+f[v][j-1][2])+f[v][j][0]*(f[v][j][0]+f[v][j][1])

   f[u][j][0]=f[u][j][0]*(f[v][j-1][0]+f[v][j-1][1]+f[v][j-1][2])

umm大概这样趴,如果有错明儿再搞算了qwq

最近好颓啊感觉,信心满满地说要每天做一道题然后结果是每天颓好久QAQ哭死了QAQ

然后T1答案就很简单了嘛,就搞完之后从小到大枚举j,然后如果f[1][j][0/1/2]!=0了j就是答案了,能明白?

over!

大概下周会做掉这题然后来放代码qwq

洛谷 P4201 设计路线 [NOI2008] 树形dp的更多相关文章

  1. 洛谷 P3177 [HAOI2015]树上染色 树形DP

    洛谷 P3177 [HAOI2015]树上染色 树形DP 题目描述 有一棵点数为 \(n\) 的树,树边有边权.给你一个在 \(0 \sim n\)之内的正整数 \(k\) ,你要在这棵树中选择 \( ...

  2. 洛谷P1040 加分二叉树(树形dp)

    加分二叉树 时间限制: 1 Sec  内存限制: 125 MB提交: 11  解决: 7 题目描述 设一个n个节点的二叉树tree的中序遍历为(l,2,3,...,n),其中数字1,2,3,...,n ...

  3. 洛谷P4438 道路 [HNOI/AHOI2018] 树形dp

    正解:树形dp 解题报告: 传送门! 昂首先看懂题目趴QwQ大概就是说有棵满二叉树,有n个叶子节点(乡村)和n-1个非叶子节点,然后这棵树的每个节点有三个属性abc,对每个非叶子节点可以从与子节点的两 ...

  4. 洛谷 P3267 [JLOI2016/SHOI2016]侦察守卫(树形dp)

    题面 luogu 题解 树形\(dp\) \(f[x][y]表示x的y层以下的所有点都已经覆盖完,还需要覆盖上面的y层的最小代价.\) \(g[x][y]表示x子树中所有点都已经覆盖完,并且x还能向上 ...

  5. 洛谷P1351 联合权值(树形dp)

    题意 题目链接 Sol 一道很简单的树形dp,然而被我写的这么长 分别记录下距离为\(1/2\)的点数,权值和,最大值.以及相邻儿子之间的贡献. 树形dp一波.. #include<bits/s ...

  6. 洛谷P4099 [HEOI2013]SAO(树形dp)

    传送门 HEOI的题好珂怕啊(各种意义上) 然后考虑树形dp,以大于为例 设$f[i][j]$表示$i$这个节点在子树中排名第$j$位时的总方案数(因为实际只与相对大小有关,与实际数值无关) 我们考虑 ...

  7. 洛谷 P1351 联合权值 —— 树形DP

    题目:https://www.luogu.org/problemnew/show/P1351 树形DP,别忘了子树之间的情况(拐一下距离为2). 代码如下: #include<iostream& ...

  8. 洛谷 P2634 聪聪可可 —— 树形DP / 点分治

    题目:https://www.luogu.org/problemnew/show/P2634 今天刚学了点分治,做例题: 好不容易A了,结果发现自己写的是树形DP...(也不用找重心)(比点分治快) ...

  9. 洛谷P3047 [USACO12FEB]Nearby Cows(树形dp)

    P3047 [USACO12FEB]附近的牛Nearby Cows 题目描述 Farmer John has noticed that his cows often move between near ...

随机推荐

  1. Python 扩展知识

    Python 练习题 Python 编程习惯 Python 转义字符 Python 格式化输出 Python 列表表达式 Python 生成器表达式 Python 序列化 Python2 与 Pyth ...

  2. Ubuntu 最好用的CHM阅读器KchmViewer

    直接在“ubuntu软件中心”进行搜索安装 为什么说它是最好用?很简单!可同时显示目录和内容,中文没乱码!能实现这两点的竞争对手已经不多了,至少我是没发现.什么chmsee,gnochm,都有乱码.虽 ...

  3. win7 默认程序设置

    1. . 2. 3. 4. 双击某个程序-->选择浏览 目标程序 .即可完成

  4. How To MD5SUM --- 如何检查MD5值?

    windows : Hash_1.0.4.exe  可以检查md5 https://help.ubuntu.com/community/HowToMD5SUM Introduction When on ...

  5. sendfile Linux函数

    现在流行的 web 服务器里面都提供sendfile 选项用来提高服务器性能,那到底 sendfile 是什么,怎么影响性能的呢? sendfile 实际上是 Linux 2.0+ 以后的推出的一个系 ...

  6. [原]关闭selinux

    检查selinux状态 [root@controller0 ~]# getenforce enforcing #disabled表示关闭状态 enforcing表示开启状 临时关闭selinux(不用 ...

  7. 如何启动、关闭和设置ubuntu防火墙

    如何启动.关闭和设置ubuntu防火墙 引自:http://www.cnblogs.com/jiangyao/archive/2010/05/19/1738909.html 就这句话就够了,下面的可以 ...

  8. HDU 1455 Sticks(经典剪枝)

    Sticks Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Sub ...

  9. 2-1 nodejs和npm的安装和环境搭建

    1.安装node.js (最新已经集成npm)  https://nodejs.org/en/ 2.升级npm $ npm install -g npm $ cnpm install -g cnpm ...

  10. shell脚本技巧记录

    2014/4/9 shell脚本变量处理: ${varible##*string} //从左向右截取最后一个string后的字符串 ${varible#*string} //从左向右截取第一个stri ...