2018.07.22哨戒炮 II(树形dp)】的更多相关文章

哨戒炮 II 描述 你的防线成功升级,从原来的一根线变成了一棵树.这棵树有 N 个炮台,炮台与炮台之间 有 N-1 条隧道.你要选择一些炮台安装哨戒炮.在第 i 个炮台上安装哨戒炮得到的防御力为 vi.上次说过,哨戒炮离得太近会产生神奇的效果.具体来说,对于炮台 i,如果它安装了 哨戒炮且和 k 个哨戒炮用隧道直接相连,那么其防御力会变化 k*di.其中 di 为炮台 i 的抗 干扰属性值.如果为正,干扰对其有正的作用:为负,干扰对其有负的作用:为 0,则完全 不受干扰. 你的整套防线的防御力为…
2021.07.17 P3177 树上染色(树形DP) [P3177 HAOI2015]树上染色 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 重点: 1.dp思想是需要什么,维护什么. 2.通过具体的状态推出未知状态的解法. 题意: 一棵有n个点的树,将其中k个点染为黑色,其余点为白色,求任意一对白白两点之间的距离和与任意一对黑黑两点之间的距离. 分析: dp思想是需要什么,维护什么.我们需要求距离和,我们就维护距离和. 在已经确定哪些点是黑点是,对于一条边,它对答案的贡献…
题意: 给定一个仙人掌,边权为1 距离定义为两个点之间的最短路径 直径定义为距离最远的两个点的距离 求仙人掌直径 题解: 类比树形dp求直径. f[i]表示i向下最多多长 处理链的话,直接dp即可. 处理环的话,类似点双tarjan,把环上的点都拉出来. 先考虑拼接更新答案.断环成链复制一倍,为了保证最短路,答案必须只能是f[i]+f[j]+i-j (i-len/2<=j<i) 单调队列优化. 直接i-j即可,另一半的绕环会在复制后的那里处理. 然后更新f[x],直接找环上其他的元素,距离就是…
传送门 题意:给一个无向连通图,问给它加边形成仙人掌的方案数. 思路: 先考虑给一棵树加边形成仙人掌的方案数. 这个显然可以做树形dp. fif_ifi​表示把iii为根的子树加边形成仙人掌的方案数. 然后有两种情况: iii点没有父亲 iii点有父亲 对于第一种情况即iii是树根的情况,显然fi=(∏fv)∗g∣sonp∣f_i=(\prod f_v)*g_{|son_p|}fi​=(∏fv​)∗g∣sonp​∣​,其中gig_igi​表示给iii个儿子两两配对(每个儿子可配可不配的方案数).…
传送门 给出一棵n" role="presentation" style="position: relative;">nn个点的树,每个点上有Ci" role="presentation" style="position: relative;">CiCi头牛,问每个点k" role="presentation" style="position: relat…
传送门 给出一棵树,树有边权和点权,若选定一个点作为中心,这棵树的代价是所有点权乘上到根的距离的和.求代价最小. 解法:一道明显的换根dp" role="presentation" style="position: relative;">dpdp,如果枚举根的话时间复杂度O(n2)" role="presentation" style="position: relative;">O(n2)O(n…
传送门 给出一个数字字串,给出若干个询问,询问在字串的一段区间保证出现2017" role="presentation" style="position: relative;">20172017而不出现2016" role="presentation" style="position: relative;">20162016需要删去的最少字符. 下面定义5个状态. 状态0:连2都没有 状态1:只…
传送门 简单的递推. 由于是DAG" role="presentation" style="position: relative;">DAGDAG,所以状态转移方程很好写. 一个点的答案等于所有能到的点的答案加上所有边权再除以边数. 没理解的请看代码: #include<bits/stdc++.h> #define N 100005 #define M 200005 using namespace std; struct Node{int…
传送门 这道题以前只会树剖和最小生成树+倍增. 而现在学习了一个叫做kruskal" role="presentation" style="position: relative;">kruskalkruskal重构树的优美姿势,搞得我不想写都不行了. 好吧事实上krsukal" role="presentation" style="position: relative;">krsukalkrsu…
传送门 图论模拟题. 这题直接写3个(可以压成一个)spfa" role="presentation" style="position: relative;">spfaspfa,前两个把题上的p,q" role="presentation" style="position: relative;">p,qp,q分别当做边权来跑,然后最后一次将前两次标记过两次的边边权设为0,标记过一次的边权设为1,…