![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
树形DP
Cyhlnj
这个作者很懒,什么都没留下…
展开
-
[USACO12FEB]Nearby Cows
题意给出一棵n个点的无根树,每个点有权值,问每个点向外不重复经过k条边的点权和题解设f[i][j]表示所有离i节点距离为j的点权和,v为它周围相邻的点,t为v的个数,则 j > 2 f[i][j] = (sigma f[v][j - 1]) - (t - 1) * f[i][j - 2] j==2 f[i][j] = (sigma f[v][j - 1]) - t * f[i][j -原创 2017-07-19 20:48:00 · 449 阅读 · 0 评论 -
CF809E Surprise me!
题意 给你一棵nnn 个点的树,每个点有权值 aiaia_i aaa 为一个排列 求 1n(n−1)∑i=1n∑j=1nφ(aiaj)disti,j1n(n−1)∑i=1n∑j=1nφ(aiaj)disti,j\frac{1}{n(n−1)}\sum_{i=1}^{n}\sum_{j=1}^{n}\varphi(a_ia_j)dist_{i,j} n≤200000n≤200000n...原创 2018-05-30 22:37:59 · 237 阅读 · 0 评论 -
虚树(Bzoj3611: [Heoi2014]大工程)
题面 传送门 虚树 把跟询问有关的点拿出来建树,为了方便树DPDPDP 在LCALCALCA处要合并答案,那么把这些点的LCALCALCA也拿出来 做法:把点按dfsdfsdfs序排列,然后求出相邻两个点的LCALCALCA,把这些点建一个虚树,维护一个栈就好了 Sol 虚树+树DPDPDP # include <bits/stdc++.h> # define IL...原创 2018-05-30 22:30:41 · 122 阅读 · 0 评论 -
Bzoj1495: [NOI2006]网络收费
题面 传送门 Sol 把每个节点都加上2n−12n−12^n-1 那么非叶节点的编号就是111到2n−12n−12^n-1 就可以把它当成是一棵线段树了 然后看收费的方法 意思就是AAA多就收AAA的 否则收BBB的费用 可以处理出每个叶节点经过某个LCALCALCA的费用和 那么枚举这条链上的非叶节点的AAA是否大于BBB就可以算出要收的费用了 然后设f[i][j]f[...原创 2018-04-04 08:17:17 · 264 阅读 · 0 评论 -
Bzoj3566: [SHOI2014]概率充电器
题面 传送门 Sol 算出每个点从子树内使它没电的概率和子树外使它没电的概率即可 注意算子树外使它没电的概率时,父亲转移来要除掉它的贡献,直接除可能有000的情况 可以把每个点的儿子排成一列,求一遍前后缀的积来计算 # include <bits/stdc++.h> # define RG register # define IL inline # define F...原创 2018-03-27 19:43:47 · 168 阅读 · 0 评论 -
清橙A1212:剪枝
题面 清橙 Sol 一种新的树上DPDPDP姿势 从左往右按链DPDPDP 做法: 维护两个栈S1S1S1,S2S2S2 S1S1S1存当前的链 S2S2S2存分叉点以下要改的链 DfsDfsDfs,弄一个分叉点,之前的链经过它,并且另一条要转移到的链也经过它 那么每次在叶节点时就把S1S1S1最下面的一部分变成S2S2S2 转移 两种情况: 最大值在S1S1S1和在...原创 2018-02-27 07:55:11 · 188 阅读 · 0 评论 -
[HNOI2014]米特运输
显然知道一个节点就可以推出整棵树 然而直接乘会爆longlong 所以考虑取log 最后排序算众数即可 # include # include # include # include # include # include # define IL inline # define RG register # define Fill(a, b) memset(a, b, sizeo原创 2017-12-12 19:19:46 · 216 阅读 · 0 评论 -
[USACO12JAN]Video Game Combos
AC自动机建立fail树后树上DP# include <stdio.h> # include <stdlib.h> # include <iostream> # include <string.h> # include <algorithm> # include <queue> # define IL inline # define RG register # define ll long long原创 2017-12-12 19:27:47 · 390 阅读 · 0 评论 -
[HAOI2010]软件安装
简单的tarjan+(本蒟蒻刚刚接触不久)恶心的树形DP题面题目描述 现在我们的手头有N个软件,对于一个软件i,它要占用Wi的磁盘空间,它的价值为Vi。我们希望从中选择一些软件安装到一台磁盘容量为M计算机上,使得这些软件的价值尽可能大(即Vi的和最大)。 但是现在有个问题:软件之间存在依赖关系,即软件i只有在安装了软件j(包括软件j的直接或间接依赖)的情况下才能正确工作(软件i依赖软件j)。幸运原创 2017-07-16 22:29:15 · 339 阅读 · 0 评论 -
[POI2014]HOT-Hotels
题目描述 There are towns in Byteotia, connected with only roads. Each road directly links two towns. All the roads have the same length and are two way. It is known that every town can be reached fro原创 2017-07-17 20:27:19 · 518 阅读 · 0 评论 -
[HAOI2009]毛毛虫
题目描述对于一棵树,我们可以将某条链和与该链相连的边抽出来,看上去就象成一个毛毛虫,点数越多,毛毛虫就越大。输入输出格式输入格式: 在文本文件 worm.in 中第一行两个整数 N , M ,分别表示树中结点个数和树的边数。 接下来 M 行,每行两个整数 a, b 表示点 a 和点 b 有边连接( a, b ≤ N )。你可以假定没有一对相同的 (a, b) 会出现一次以上。 输出格式: 在原创 2017-07-19 17:01:08 · 436 阅读 · 0 评论 -
CTSC 选课
题面(有删减)题目描述 学校实行学分制。每门的必修课都有固定的学分,同时还必须获得相应的选修课程学分。学校开设了N(N<300)门的选修课程,每个学生可选课程的数量M是给定的。学生选修了这M门课并考核通过就能获得相应的学分。你的任务是为自己确定一个选课方案,使得你能得到的学分最多,并且必须满足先修课优先的原则。假定课程之间不存在时间上的冲突。 输入输出格式 输入格式: 第一行有两个整数N,M原创 2017-07-17 22:24:41 · 590 阅读 · 0 评论 -
luogu 访问”美术馆“ && 偷天换日
把这两个题放在一起,是因为这两个题差不多,难度递进其实是懒得写两个博客所以一起分享一下访问“美术馆”题目描述 经过数月的精心准备,Peer Brelstet,一个出了名的盗画者,准备开始他的下一个行动。艺术馆的结构,每条走廊要么分叉为两条走廊,要么通向一个展览室。Peer知道每个展室里藏画的数量,并且他精确测量了通过每条走廊的时间。由于经验老到,他拿下一幅画需要5秒的时间。你的任务是编一个程序,计原创 2017-07-19 09:18:24 · 323 阅读 · 0 评论 -
[ZJOI2007]时态同步
题目描述小Q在电子工艺实习课上学习焊接电路板。一块电路板由若干个元件组成,我们不妨称之为节点,并将其用数字1,2,3….进行标号。电路板的各个节点由若干不相交的导线相连接,且对于电路板的任何两个节点,都存在且仅存在一条通路(通路指连接两个元件的导线序列)。 在电路板上存在一个特殊的元件称为“激发器”。当激发器工作后,产生一个激励电流,通过导线传向每一个它所连接的节点。而中间节点接收到激励电流后,得原创 2017-07-19 11:42:26 · 298 阅读 · 0 评论 -
[USACO10MAR]伟大的奶牛聚集
因为是英文题,题目不再重复。。题意给你一棵无根树,每条边有边权,每个点有点权,要你选一个点,使每个点到这个点的距离*点权的和最小,求这个值。思路设dis[u]为u所有后代到它的距离*点权,sum[u]为u所有后代的点权和包括u 先以1为根Dfs一遍,预处理出所有的dis,sum 然后问题就变成了更换这棵树的根,维护dis,取所有根的dis的最小值。 所以再一次Dfs,从u转移到儿子v时,dis原创 2017-07-19 15:47:33 · 337 阅读 · 0 评论 -
[APIO2018] Duathlon 铁人两项
题面 LOJLOJLOJ自己找。。 Sol 建立圆方树 考虑枚举起点sss和终点ttt 那么答案就是sss到ttt间的点双的点数和减去s,ts,ts,t 设方点权值为点双的点数,圆点的权值为−1−1-1 那么就是求s,ts,ts,t的路径上的点权和 现在考虑中间的点xxx 那么它的贡献就是经过它的路径的条数*它的权值 树DPDPDP得解 # include <bit...原创 2018-05-31 12:13:31 · 834 阅读 · 0 评论