————树形dp
BAJim_H
比孤独更可悲的事情,就是根本不知道自己很孤独,或者分明很孤独,却把自己都骗得相信自己不孤独。
展开
-
[JZOJ4923] 巧克力狂欢
Description Alice和Bob有一棵树(无根、无向),在第i个点上有ai个巧克力。首先,两人个选择一个起点(不同的),获得点上的巧克力;接着两人轮流操作(Alice先),操作的定义是:在树上找一个两人都没选过的点并获得点上的巧克力,并且这个点要与自己上一次选的点相邻。当有一人无法操作 时,另一个人可以继续操作,直到不能操作为止。因为Alice和Bob是好朋友,所以他们希望两人得到的巧原创 2016-12-21 20:31:00 · 377 阅读 · 0 评论 -
[JZOJ4202] Shopping
Description Solution简化题意就是选择一个树上的联通块,这个联通块中所有商店至少买一个做背包树上联通块问题往往可以通过点分治转化成树形依赖问题先对于整棵树点分治,每个分治中心分别作为当前分治子树的根来树形依赖背包就可以了多重背包可以拆分成log个独立的物品来考虑 好像还有一种单调队列的做法可以省掉这个log?复杂度O(NMlognlogd)O(...原创 2018-06-18 17:59:35 · 240 阅读 · 0 评论 -
【杂题】【树形DP】【NTT】[未知来源] 树 【无实现】
Description 给定一棵有n个节点的树,每个点有一个点权a[i],每条边有一个出现的概率p(u,v),那么随机出现若干个联通块,给定一个整数k,对于每个联通块的特征值记为(∑a[i])k(∑a[i])k(\sum a[i])^k,对于整棵树的特征值我们记为联通块的特征值的和,求整棵树的特征值的期望。 答案对998244353取模 1<=n,k<=1000...原创 2018-09-04 17:32:08 · 289 阅读 · 0 评论 -
[JZOJ5906]【NOIP2018模拟10.15】传送门
Description给你一棵n个点的带边权无向树。需要从1号点开始,将整棵树遍历一遍并最终回到1号点。走到一个点时,可以在这个点设置一个传送门,只要地图上有两个传送门,就可以在它们之间以0的时间传送如果要在当前节点设置传送门,并且已经有了两个传送门,那么需要选择之前的某一个传送门让他消失,也就是说任意时刻至多有两个传送门,且不能在同一节点。求最小总时间。n<=1000000S...原创 2018-10-15 17:05:19 · 291 阅读 · 0 评论 -
[JZOJ5641] 林克卡特树【树形DP】【凸优化】
Description给定一棵n个节点的树,边有边权(可能为负)。你需要删掉恰好K条边,再连上恰好K条边权为0的边,并保证连完边后这还是一棵树,求这棵树的最大的最长路长度。K&lt;n≤300000K&lt;n\leq 300000K<n≤300000,∣边权∣≤106|边权|\leq 10^6∣边权∣≤106Solution转化模型删K条边再加K条边,那么对于新...原创 2018-10-28 22:03:15 · 415 阅读 · 0 评论 -
[JZOJ5939]【NOIP2018模拟10.30】阻击计划
Description小R和小Z打算在这个周末一起骑车在G国的城市看风景,G国的城市有n个城市,m条双向道路,这m条边中,有n-1条道路已经铺设完毕,任意两个城市之间都有一条由铺设好的道路组成的路径。由于G国经常收到周围强大力场的影响,**G国的每个城市至多是十条道路的端点(**包括铺设好和未铺设好的道路)。小R和小Z制订了这样一个Van耍计划:从一个城市开始,沿着G国的道路骑行,途中不经...原创 2018-10-30 22:11:35 · 259 阅读 · 0 评论 -
[JZOJ5944]【NOIP2018模拟11.01】信标
Description对于 100% 的数据, 1 ≤ n ≤ 1000000, 1 ≤ u, v ≤ n, 保证数据合法.Solution显然,当n>1时答案>0因此我们不妨枚举一个点作为根,它是必须要放的,那么深度不同的节点就被区分了。对于一个节点,假设它有k个儿子,那么至少要在k-1个儿子子树中有信标证明:显而易见,若有两个子树没有信标,那么靠其他的子树中的信标以及...原创 2018-11-01 16:06:09 · 344 阅读 · 0 评论 -
【2019.1.8模拟赛】Tree 【长链剖分】【凸优化】【DP】
Description给出一棵n个点的树,每个点有点权,要求在树上选出恰好m条点不相交的链,每条链至少有k个点,要求点权和最大。n≤150005n\leq 150005n≤150005Solution看到恰好选出m条链,立刻反应到是凸优化,二分选择一条链需要花费的额外代价但是要求每条链至少有K个点。设f[i]f[i]f[i]为i子树中随便选若干条链的答案(满足k的限制)一个点的贡献大...原创 2019-01-10 15:37:48 · 271 阅读 · 0 评论 -
[JZOJ2724] 圆【计算几何】【数据结构】【DP】
Description二维坐标平面内有n个圆,第i个圆圆心在(Xi,Yi),半径为Ri,权值Vi。任何两个圆都不会相交(也不会相切),但是圆与圆之间可能存在包含关系。当我们在一个圆里面的时候,我们必须经过它的边界一次,才能走出这个圆。对于不同的两个圆A、B,如果可以从A到B且经过不超过K次边界,则称A、B是连通的。现在的问题是:对于所有的连通的一对圆(A,B),权值差的绝对值最大有多少。即找到...原创 2019-02-21 15:24:34 · 330 阅读 · 0 评论 -
[JZOJ6029]【GDOI2019模拟2019.2.25】染色【无实现】【DP】【计数】
DescriptionSolutionk=0很简单,显然染色总方案数是cn−1c^{n-1}cn−1种。k=1,树上连通块数的经典计算方式是点数-边数,但此时还要减去大小为1的连通块数。每种颜色的边数和是n-1那么∑i=1cf(i)=n∗c−(n−1)−∑i=1cai\sum\limits_{i=1}^{c}f(i)=n*c-(n-1)-\sum\limits_{i=1}^{c}a_...原创 2019-02-25 22:33:44 · 311 阅读 · 0 评论 -
【WC2019】数树【计数】【DP】【多项式】
Description此题含有三个子问题问题1:给出n个点的两棵树,记m为同时在两棵树中的边的个数,求ymy^mym问题2:给出n个点的一棵树,另外一棵树任意生成,求所有方案总的ymy^mym的和问题3:两棵树均任意生成,求所有方案总的ymy^mym的和Solution留坑待填Code#include <bits/stdc++.h>#define fo(i,a,...原创 2019-04-20 21:48:44 · 260 阅读 · 0 评论 -
[LibreOJ 3124]【CTS2019】氪金手游【容斥原理】【概率】【树形DP】
DescriptionSolution首先它的限制关系是一个树形图首先考虑如果它是一个外向树该怎么做。这是很简单的,我们相当于每个子树的根都是子树中最早出现的点,概率是容易计算的。设DP状态f[i][j]f[i][j]f[i][j]为做到以i为根的子树,子树中权值W的和为j且满足限制关系的概率。然后就可以直接利用子树背包DP来转移了。如果有些边是反向(儿子到父亲)的,我们可以通过...原创 2019-05-21 20:14:06 · 273 阅读 · 0 评论 -
【PKUSC2019】树染色【线段树合并】【树形DP】
Description给出一棵n个点的树,现在有m种颜色,要给每个节点染色,相邻节点不能同色。另外有k条限制,形如x号点不能为颜色y同一节点有可能哟多条限制。求方案数对998244353取模的结果。Solution考场上一直在想怎么容斥做,怎么都弄不出来。学傻了。考虑暴力DP设f[i][j]f[i][j]f[i][j]为当前处理了以i为根的子树,i的颜色为j的方案数。记g[i]...原创 2019-05-29 11:54:54 · 815 阅读 · 0 评论 -
【DP】【贪心】[51Nod1378] 夹克老爷的愤怒
Description给出N个点的一棵树,边的长度为1 你可以选择在某些上放一个家丁,一个家丁可以控制与此处距离不超过K的所有点。 求最小放置家丁数 N,K≤105N,K≤105N,K\leq 10^5Solution如果是一条链的话,我们很容易想到从底向上贪心,每次当最深的点到当前点为K了就放一个 就是使放的点尽量向上回到原来的问题 同样的,设F[i]F[i]F[i]表...原创 2018-05-25 22:15:05 · 223 阅读 · 0 评论 -
[JZOJ5609]【NOI2018模拟3.28】Tree
Description给你一颗有 n 个点的树,其中 1 号点为根节点,每个点都有一个权值 val[i]val[i] 你可以从树中选择一些点,注意如果 i 与 j 都被选中且 j 在 i 的子树内,那么必须满足 val[i]>val[j]val[i] >val[j] 请你求出最多能同时选出多少个点 n<=100000Solution有两种思路 第一种是先考虑一条链的情况,然后将它拓展到树原创 2018-03-28 16:59:37 · 340 阅读 · 0 评论 -
[JZOJ5621]【NOI2018模拟4.1】反攻
Description Solution对每一个点单独算贡献 先定一个树根 设FiF_i表示只考虑i的子树,i不会被感化的概率容易写出方程为Fi=(1−Pi)∏j∈son[i](1−qi,j×(1−Fj))F_i=(1-P_i)\prod\limits_{j\in son[i]}(1-q_{i,j}\times(1-F_j)) 再设GiG_i表示i不会被它父亲感化的概率,设它父亲为x 容易写原创 2018-04-01 15:41:50 · 269 阅读 · 0 评论 -
[JZOJ3861]【JSOI2014】支线剧情2
Description Code一看这种题就是树形DP但是尴尬的是,我们如果直接用存档到叶子的距离DP,会非常不好DP,存在后效性的问题。显然每个叶子的路径长等于叶子的深度(带权)减去当前存档点的深度。路径和最小,叶子深度固定,那就是对应存档点深度和最大了。设f[i]f[i]表示目前在以ii为根的子树,在ii处有一个存档的最大存档深度和。考虑转移。显然我们应该先走不存档的子树,顺序问题怎么考虑?对原创 2017-01-19 21:23:22 · 484 阅读 · 0 评论 -
[JZOJ5050] 颜色树
Description 思源湖畔有一棵树,那是独孤玉溪最喜欢的地方。 传说中,这棵不见边际的树有N个节点,每个节点都有1片叶子,每片叶子都拥有K种颜色中的一种,独孤玉溪喜欢爬到这棵树上,沿着一条路线摘叶子,并拥有所有颜色的叶子。 独孤玉溪会选择一个起点,并沿着树边走,然后最终停在一个终点上(起点和终点可能相同),当然了每一个结点只能经过一次(每一片叶子只能摘一遍)。独孤玉溪突生奇想,原创 2017-04-24 20:47:45 · 854 阅读 · 1 评论 -
[JZOJ5165] 小W的动漫
Description 小W最近迷上了日本动漫,每天都有无数部动漫的更新等着他去看,所以他必须将所有的动漫排个顺序,当然,虽然有无数部动漫,但除了1号动漫,每部动漫都有且仅有一部动漫是它的前传(父亲),也就是说,所有的动漫形成一个树形结构。而动漫的顺序必须满足以下两个限制: 1、一部动漫的所有后继(子孙)都必须排在它的后面; 2、对于同一部动漫的续集(孩子),小W喜爱度高的须排在前面原创 2017-06-25 16:09:14 · 756 阅读 · 0 评论 -
[JZOJ5344]【NOIP2017模拟9.3A组】摘果子
Description Solution树形依赖背包裸模型F[i][j]表示表示DFS序上第i~N个已经做完了,重量为j F[i][j]=max(F[i+1][j−weight[d[i]]]+value[d[i]],F[i+size[d[i]]][j])F[i][j]=max(F[i+1][j-weight[d[i]]]+value[d[i]],F[i+size[d[i]]][j])Code#i原创 2017-09-03 12:29:04 · 482 阅读 · 0 评论 -
一类有依赖的树形DP
Text这类问题通常形式是给定一棵树,父亲选了儿子才能选,求最优解或者方案数进行DP考虑到如果直接枚举每一个儿子与父亲的转移,状态非常大,一般是难以跑过的DFS序对于树上的问题,可以考虑用DFS序来做。我们知道一棵子树对应DFS序上的一段区间,区间的左端点是子树的根。倒过来在DFS序上DP设d[i]数组存dfs序设F[i]表示DFS序上第i~N个已经做完了 如果d[i]这个点选,可以从F[i+1]原创 2017-09-03 12:23:34 · 352 阅读 · 0 评论 -
[JZOJ5391]【NOIP2017提高A组模拟9.26】卡常题
Description ρ有一个二分连通无向图,X 方点、Y 方点均为n个(编号为1 ~ n)。 这个二分图比较特殊,每一个Y 方点的度为2,一条黑色边,一条白色边。 所有黑色边权值均为a ,所有白色边权值均为b 。 选择一个X 方点,代价为连接的所有边的权值之和。 激活一个Y 方点,需要选择至少一个与之相邻的X 方点。 现在,ρ想激活每个Y 方点,他想知道最小的总原创 2017-09-28 20:00:16 · 393 阅读 · 0 评论 -
[JZOJ5442]【NOIP2017提高A组冲刺11.1】荒诞([BZOJ3060]【POI2012】Tour de Byteotia)
Description 我的灵魂与我之间的距离如此遥远,而我的存在却如此真实。 ——加缪《局外人》 我醒来的时候,发现满天星斗照在我的脸上。田野上的声音一直传到我的耳畔。夜的气味,土地的气味,海盐的气味,使我的两鬓感到清凉。这沉睡的夏夜的奇妙安静,像潮水一般浸透我的全身。这时,长夜将尽,汽笛叫了起来。它宣告有些人踏上旅途,要去一个从此和我无关痛痒的世界。 这时我在想一个问题:我原创 2017-11-01 22:15:48 · 322 阅读 · 0 评论 -
[JZOJ4370] hypocritical
Description Solution几乎没有什么思维难度先将原树建成一个Trie,此时Trie上的节点已经合并了一些终点了,合并的时候DP背包一下然后再BFS把Trie建成SAM,那么就变成了在Fail树上DP,子树选取,直接背包即可代码略为猥琐Code#include <cstdio>#include <iostream>#include <algorithm>#include <cm原创 2017-12-30 10:48:13 · 276 阅读 · 0 评论 -
[JZOJ5519] Hello my friend
Description给出一棵N个节点的树,每个点有可能是黑白两种颜色的一种现在从1号点开始随机游走(即走这个点的每条出边的概率是相同的),每到一个点,如果这个点是黑点,或者这是白点并且这个点第一次经过,那么答案+1。当走到度数为1的节点时游走停止(保证1号节点的度数大于1)求答案的期望(对998244353取模) NSolution不妨先考虑只有黑点怎么做设FiF_i表原创 2018-01-15 16:38:20 · 673 阅读 · 0 评论 -
[JZOJ5513] 送你一棵圣诞树2
Description 给出一棵N个点的树 在树上进行随机点分治,每个节点需要你确定一个不超过K的权值,点分树上的父亲的权值严格小于儿子的。 问有多少种不同的结果,两种结果不同当且仅当某一个节点在点分树上的父亲不同或者它们的权值不同 1Solution直接按照题意模拟,N基本上都要存在于指数中考虑转化题意。 点分治是有着严格的大小关系的,不妨倒过来想,确定原创 2018-01-09 21:21:39 · 496 阅读 · 0 评论 -
[JZOJ4331] 树
Description给定一个n个节点的无根树,每个点有点权,要求将这棵树分成若干条路径(每个点在且仅在一条路径中),使得每条路径的点权和非负。 求方案数 模1000000007n≤100000,|点权|≤10000n\leq 100000,|点权|\leq 10000Solution随便弄个根设F[i]表示i这个点为根的子树已经全部覆盖完的方案数那么现在要找到一条路径来原创 2018-01-19 22:52:16 · 246 阅读 · 0 评论 -
[AtCoder Grand Contest 009] D: Uninity (agc009D)
原题链接 https://agc009.contest.atcoder.jp/tasks/agc009_dDescription给你一棵n个节点的树 你需要找到一种点分治方案,使得点分树的深度最小,输出这个最小深度(根的深度为0) n<=100000Solution我们将每个点标号,表示这个点在点分树中的深度有性质:两个标号相同的点之间的路径上一定有一个标号...原创 2018-02-26 21:43:34 · 371 阅读 · 0 评论 -
【PKUSC2019】线弦图【计数】【树形DP】【分治FFT】
Description定义线图为把无向图的边变成点,新图中点与点之间右边当且仅当它们对应的边在原图中有公共点,这样得到的图。定义弦图为不存在一个长度大于3的纯环,纯环的定义是在环上任取两个不相邻的点,它们之间都没有边,也就是不存在没有弦的环的无向图。现在给出一棵n个点的树,你可以在上面添加任意多条边(不能重边),要求得到的图的线图是弦图,求加边的方案数。n<=200000Solut...原创 2019-05-29 20:08:12 · 485 阅读 · 0 评论