
树形DP
文章平均质量分 63
v5zsq
新的一天,新的不会
展开
-
Newcoder 38 F.珂朵莉喊你一声大佬(二分+树形DP+强连通分量+拓扑排序)
Description有nnn种大佬,第iii种大佬有aia_iai个珂朵莉想让最少个数的一种大佬的个数最多你可以创造mmm个任意种类的大佬,并且可以把一些大佬变成另一些大佬x→yx \rightarrow yx→y意味着可以把任意个xxx类型的大佬变成yyy类型的大佬一个大佬可以被转换多次对于每个yyy,最多有一个xxx使得x→yx \rightarrow yx→y成立Input...原创 2018-10-24 17:36:08 · 621 阅读 · 0 评论 -
HDU 4625 JZPTREE(树形DP+组合数学)
Description给出一棵nnn个节点的树,边权为一,求∑u,vdist(u,v)k∑u,vdist(u,v)k\sum\limits_{u,v}dist(u,v)^kInput第一行一整数TTT表示用例组数,每组用例首先输入两个整数n,kn,kn,k,之后n−1n−1n-1行每行两个整数表示一条树边(1≤T≤5,1≤n≤50000,1≤k≤500)(1≤T≤5,1≤n≤500...原创 2018-09-05 08:28:47 · 328 阅读 · 0 评论 -
CodeForces 81 E.Pairs(树形DP)
Description给出nnn个点nnn个边的有向图,每个点的出度为111且有颜色(黑白),求该图的最大匹配数,以及达到最大匹配后要让异色匹配数最大Input第一行一整数nnn表示点数,之后nnn行每行输入两个整数fi,sifi,sif_i,s_i表示iii节点的父亲节点和颜色(2≤n≤105)(2≤n≤105)(2\le n\le 10^5)Output输出最大匹配数以及最...原创 2018-07-15 16:14:14 · 380 阅读 · 0 评论 -
CodeForces 77 C.Beavermuncher-0xFF(树形DP+贪心)
Description给出一棵nnn个节点的树,每点有valivalival_i个虫子,从树根sss出发除虫,不能停留在一个节点,必须一直移动,每次只能向有虫子的节点移动,到达该节点后除去该节点的一个虫子,最后需要返回树根,问最多可以除掉多少虫子Input第一行一整数nnn表示节点数,之后输入nnn个整数valivalival_i表示第iii个节点的虫子数,之后输入n−1n−1n-1条...原创 2018-07-15 12:48:50 · 280 阅读 · 0 评论 -
CodeForces 70 E.Information Reform(树形DP+Floyd)
Description给出一棵nnn个节点的树,边权均为111,要求在其中一些点建立信息中转站,距离中转站lenlenlen的点收到信息的代价为dlendlend_{len},设置一个中转站的代价是KKK,问如何设置可以使得总代价最小Input 第一行两个整数n,Kn,Kn,K表示点数和设置一个中转站的代价,之后输入nnn个整数d1,...,dnd1,...,dnd_1,...,d_n...原创 2018-07-14 12:20:00 · 397 阅读 · 0 评论 -
CodeForces 161 D.Distance in Tree(树形DP)
Description给出一棵nnn个节点的树,边权均为111,问树上距离为kkk的点对数量,(u,v)(u,v)(u,v)和(v,u)(v,u)(v,u)视作一种Input第一行两整数n,kn,kn,k,之后输入n−1n−1n-1条树边(1≤n≤50000,1≤k≤500)(1≤n≤50000,1≤k≤500)(1\le n\le 50000,1\le k\le 500)Outp...原创 2018-07-17 10:22:30 · 557 阅读 · 0 评论 -
CodeForces 120 F.Spiders(树的直径)
Description给出TTT棵树,每次可以从两棵树中选一个节点粘起来继而将两棵树变成一棵树,问这TTT棵数最后形成的树的直径长度最大值Input第一行一整数TTT表示树的数量,之后TTT行每行输入树的节点数nnn以及n−1n−1n-1条树边(1≤T≤100,2≤n≤100)(1≤T≤100,2≤n≤100)(1\le T\le 100,2\le n\le 100)Output...原创 2018-07-17 09:50:31 · 488 阅读 · 0 评论 -
CodeForces 51 F.Caterpillar(边双连通分量+树的直径)
Description定义毛虫图为一个无向无环(但可以有自环)无重边(但自环可以重边)图,在不考虑直径时即为一棵树,该棵树的非直径点到直径的距离只能为111。现在给出一个nnn个点mmm条边的无向图,每步操作可以把两个不同的点a,ba,ba,b合并成一个点ccc,且所有的边a↔da↔da\leftrightarrow d和b↔db↔db\leftrightarrow d均变成c↔dc↔dc\l...原创 2018-04-21 21:39:49 · 1451 阅读 · 0 评论 -
CodeForces 23 E.Tree(树形DP+高精度)
Description给出一棵nnn个节点的树,可以断掉任意数量的边把树分成若干连通分支,问所得连通分支点数乘积最大值Input第一行一整数nnn表示点数,之后n−1n−1n-1行每行两个整数u,vu,vu,v表示一条树边(1≤n≤700)(1≤n≤700)(1\le n\le 700)Output输出断掉任意数量的边后所得各个连通分支点数乘积最大值Sample Input...原创 2018-03-29 11:00:44 · 390 阅读 · 0 评论 -
HDU 2586 How far away ?(树形DP+在线倍增LCA)
Description给出一棵nnn个节点的树,边有边权,mmm次查询,每次查询树上两点简单路径长度Input第一行一整数TTT表示用例组数,每组用例首先输入两个整数n,mn,mn,m表示点数和查询数,之后n−1n−1n-1行每行三个整数u,v,wu,v,wu,v,w表示u,vu,vu,v之间有一条权值为www的边,最后mmm行每行输入两个整数u,vu,vu,v表示查询u,vu,vu,...原创 2018-04-03 14:34:36 · 223 阅读 · 0 评论 -
CodeForces 767 C.Garland(树形DP)
Description给出一棵nnn个节点的有向树,每个点有点权,要求减掉两个非根节点与其父亲节点之间的边把树分成三部分使得这三部分非空且点权和相同Input第一行一整数nnn表示点数,之后nnn行每行输入iii节点的父亲节点fa[i]fa[i]fa[i]和其点权v[i]v[i]v[i](3≤n≤106,−100≤v[i]≤100)(3≤n≤106,−100≤v[i]≤100)(3...原创 2018-04-10 16:56:10 · 313 阅读 · 0 评论 -
CodeForces 765 E.Tree Folding(树形DP)
Description给出一棵nnn个节点的树,每次操作可以选择树上一点vvv,把两条不相交的单链合并,即把v,a1,...,akv,a1,...,akv,a_1,...,a_k和v,b1,...,bkv,b1,...,bkv,b_1,...,b_k合并成v,a1,...,akv,a1,...,akv,a_1,...,a_k,其中a1,...,ak,b1,...,bka1,...,ak,b1,...原创 2018-04-10 16:15:23 · 304 阅读 · 0 评论 -
CodeForces 14 D.Two Paths(树的直径)
Description给出一棵nnn个节点的树,边权均为111,要求找出两条不相交路径使得这两条路径长度之积最大Input第一行一整数nnn表示点数,之后n−1n−1n-1行每行两个整数u,vu,vu,v表示一条树边Output输出两条不相交路径长度之积的最大值Sample Input4 1 2 2 3 3 4Sample Output1Solutio...原创 2018-03-25 15:47:56 · 643 阅读 · 0 评论 -
Newcoder 140 H.travel(树形DP)
Description给出一棵nnn个节点的树,每个点有点权,选取其中不相交的三条链使得三条链的权值之和最大Input第一行一整数nnn表示点数,之后输入nnn个整数wiwiw_i表示每个点点权,最后n−1n−1n-1行每行输入两个整数表示一条树边(3≤n≤400001,0≤wi≤106)(3≤n≤400001,0≤wi≤106)(3\le n\le 400001,0\le w_i...原创 2018-09-15 22:02:09 · 169 阅读 · 0 评论 -
HDU 6393 Traffic Network in Numazu(树形DP+在线倍增LCA+BIT+并查集)
Description给出一个nnn个点nnn条边的连通无向图,边有边权,qqq次操作,操作分两种0 X Y0 X Y0\ X\ Y:将第XXX条边边权修改为YYY1 X Y1 X Y1\ X\ Y:查询X,YX,YX,Y两点间的最短路Input第一行一整数TTT表示用例组数,每组用例首先输入两个整...原创 2018-09-10 13:24:56 · 293 阅读 · 0 评论 -
Newcoder 144 F.Squirtle(树形DP+高精度)
Description定义161616个映射fi:{0,1}2→0,1f_i:\{0,1\}^2\rightarrow {0,1}fi:{0,1}2→0,1,假设iii的二进制表示为i3i2i1i0i_3i_2i_1i_0i3i2i1i0,那么有fi(0,0)=i0,fi(0,1)=i1,fi(1,0)=i2,fi(1,1)=i3f_i(0,0)=i_0,f_i(0,1)=i_1,...原创 2018-09-18 14:24:34 · 236 阅读 · 0 评论 -
Newcoder 26 C.手铐(边双连通分量+树形DP)
Description给你一个连通无向图,保证每个点最多属于一个简单环,每个点度数最多为333,求这个图有多少“手铐图形个数”其中“手铐图形个数”,定义为三元组(x,y,S)(x,y,S)(x,y,S),其中xxx和yyy表示图上的两个点,SSS表示一条xxx到yyy的简单路径,而且必须满足:1.xxx和yyy分别在两个不同的简单环上2.xxx所在的简单环与路径SSS的所有交点仅有x,yx...原创 2018-10-31 14:10:15 · 636 阅读 · 0 评论 -
Newcoder 40 C.珂朵莉的二分图(dfs+树形DP)
Description珂朵莉给你一个无向图其有nnn个点,mmm条边对于每条边,她想知道删了这条边之后这个图是不是一个二分图Input第一行两个整数n,mn,mn,m之后mmm行,每行两个数x,yx,yx,y表示有一条xxx和yyy之间的无向边第iii个边的序号即为iii(n,m≤106)(n,m\le 10^6)(n,m≤106)output第一行输出一个整数,表示有多少边满...原创 2018-10-22 12:49:08 · 789 阅读 · 3 评论 -
Newcoder 40 B.珂朵莉的值域连续段(树形DP)
Description珂朵莉给你一个有根树,求有多少个子树满足其内部节点编号在值域上连续一些数在值域上连续的意思即其在值域上构成一个连续的区间Input第一行有一个整数nnn,表示树的节点数。接下来n–1n–1n–1行,每行两个整数x,yx,yx,y,表示存在一条从xxx到yyy的有向边。输入保证是一棵有根树。(n≤105)(n\le 10^5)(n≤105)output输出一个...原创 2018-10-22 12:38:13 · 266 阅读 · 0 评论 -
HDU 6446 Tree and Permutation(组合数学+树形DP)
Description给出一棵nnn个点的树,边有边权,对于111~nnn的这n!n!n!个排列,记排列p1,...,pnp_1,...,p_np1,...,pn这个排列的权值为在树上pip_ipi到pi+1p_{i+1}pi+1的最短路长度之和,求所有排列的权值和Input第一行一整数nnn表示点数,之后n−1n-1n−1行每行输入三个整数u,v,wu,v,wu,v,w表示u,vu...原创 2018-09-30 12:32:34 · 471 阅读 · 0 评论 -
Newcoder 111 A.托米的简单表示法(树形DP)
Description一天,他正在为解析算术表达式的课程准备课件。 在课程的第一部分,他只想专注于解析括号。 他为他的学生发明了一个有趣的正确括号序列的几何表示,如下图所示:几何表示的定义:1.对于一个括号序列AAA,我们定义g(A)g(A)g(A)是AAA的几何表示形式,则“()"“()"“()"的表示是一个1∗11*11∗1的方块,高度为111;2...原创 2018-10-15 10:53:01 · 202 阅读 · 0 评论 -
Newcoder 128 C.寻宝(树形DP)
Description由依是战线佯攻部队的辅助人员,在岩泽消失之后,企图代替岩泽成为GDMGDMGDM主唱。但是SSSSSSSSS战线的领袖仲村由理是不会轻易让她加入的,于是由理子给了由依一项艰巨的任务:去一个地下迷宫寻找宝石!这个迷宫由nnn个房间组成,编号为000到n−1n-1n−1,每个房间里都有一颗宝石,房间通过单向通道连接。每个房间里有两个门:一个通向第RRR个房间(R=(a⋅v2+...原创 2018-10-06 09:34:39 · 280 阅读 · 0 评论 -
Newcoder 148 I.Rikka with Zombies(树形DP)
Description给出一棵nnn个节点的树,再给出mmm只僵尸的位置xix_ixi以及能力hih_ihi,第iii条边可以等概率建立起高度为[li,ri][l_i,r_i][li,ri]的围墙,第iii只僵尸可以越过任何小于hih_ihi的围墙,问至少存在一个位置安全(即没有僵尸可以到达这个位置)的概率Input第一行一整数TTT表示用例组数,每组用例首先输入两个整数n,mn,...原创 2018-09-27 08:16:14 · 331 阅读 · 0 评论 -
Newcoder 156 F.托米的游戏(树形DP)
Description托米有一棵有根树TTT, 树根为111,每轮他会在剩下的子树中等概率一个点uuu, 砍掉uuu的子树 (包含uuu),如果树上的点都被砍光了,游戏结束。求出这个游戏进行的期望轮数,可以证明这个数一定是有理数,设他为ab\frac{a}{b}ba,你需要告诉他一个整数xxx满足xb=a(mod 998244353)xb=a(mod\ 998244353)xb=a...原创 2018-10-01 16:46:32 · 246 阅读 · 0 评论 -
Newcoder 140 B.discount(树形DP)
Description有nnn种饮料,第iii种饮料价格为p[i]p[i]p[i],当买第iii种饮料时有两种优惠:1.直接优惠d[i]d[i]d[i]元,也就是说只需要花费p[i]−d[i]p[i]−d[i]p[i]-d[i]买第iii种饮料2.免费得到第f[i]f[i]f[i]种饮料问这nnn种饮料每种至少有一个所需的最少花费Input第一行一整数nnn表示饮料种类,之...原创 2018-09-14 17:21:32 · 166 阅读 · 0 评论 -
Newcoder 147 B.Enumeration not optimization(状压DP+树形DP)
Description给出一个nnn个点mmm条边的无向图,边有边权,对于这张图的任意一个有根生成树,定义其权值为∑e∈{x,y}we⋅max(dx,dy)\sum\limits_{e\in \{x,y\}}w_e\cdot max(d_x,d_y)e∈{x,y}∑we⋅max(dx,dy)其中dxd_xdx为xxx点在生成树中的深度,统计这张图所有有根生成树权值之和,结果模1...原创 2018-09-19 16:24:09 · 266 阅读 · 0 评论 -
Newcoder 146 C.Counting paths(树形DP)
Description给出一棵nnn个节点的树,初始每个点为白色,对于一个点集SSS,定义f(s)f(s)f(s)为:将SSS中点染成黑色,如果存在任何白点在两个黑点路径之间则f(S)=0f(S)=0f(S)=0,否则选取一个路径集合,使得该路径集合中每条路径斗不包含黑点,之后把路径上的点染成红色,此时f(S)f(S)f(S)为使得所有黑点的邻接点为黑点或红点的路径集合数量,要求对于每个非空子集...原创 2018-09-19 16:21:54 · 316 阅读 · 0 评论 -
Newcoder 144 G.Pikachu(最大流+树形DP+高精度)
Description给出一棵nnn个节点的树,边有边权,对这nnn个节点建一张完全图,图中两点间距离为两点的树上距离,问任意两点在图上的最大流之和Input第一行一整数TTT表示用例组数,每组用例首先输入一整数nnn表示点数,之后n−1n-1n−1行每行输入三个整数u,v,wu,v,wu,v,w表示u,vu,vu,v之间有一条权值为www的树边(1≤T≤10,2≤n≤105,1≤wi≤1...原创 2018-09-18 14:25:04 · 257 阅读 · 0 评论 -
HDU 6201 transaction transaction transaction(树形DP)
Description给出一棵nnn个节点的树,一个人要在一个节点买一本书然后走到另一个节点卖掉,在第iii个节点买卖书的价格为valivalival_i,经过每条边都要付出对应的代价,问这个人赢利的最大值Input第一行一正整数TTT表示用例组数,每组用例首先输入一正整数nnn表示点数,之后输入nnn个整数valivalival_i表示iii节点买卖书的价格,之后n−1n−1n-1行...原创 2018-02-14 16:35:07 · 383 阅读 · 0 评论 -
HDU 6161 Big binary tree(树形DP+map)
Description给出一个nn个节点的完全二叉树,11节点为根节点,xx节点的父亲节点为⌊x2⌋\lfloor\frac{x}{2}\rfloor,xx节点的权值为xx,定义一条路径的权值为该条路径所经过节点的权值之和,mm种操作,操作有两种change u x:change\ u\ x:把uu节点的权值改为xxquery u:query\ u:查询所有经过uu节点路径权值的最大值Input多组原创 2018-02-10 15:48:52 · 715 阅读 · 0 评论 -
SGU 134 Centroid(树形DP)
Description 给出一棵n个节点的无向树,问删去树上哪个顶点及与这个点相连的边后,能够最小化剩余连通块中节点的最大值 Input 第一行为一整数n表示点数,之后n-1行每行两个整数表示树上一条边(1<=n<=16000) Output 输出删去一个顶点后最小的剩余剩余连通块中节点的最大值,并输出满足这个条件的节点数以及这些节点的编号 Sample Input 7 1 2 2原创 2016-04-15 11:37:23 · 555 阅读 · 0 评论 -
POJ 3398 Perfect Service(树形DP)
Description 在一个n个点n-1条边的计算机网络中选取一些计算机做服务器,对于服务器的设置,要求每台电脑要么是服务器要么是与服务器相连,但是一台电脑如果不是服务器那么其不能和多台服务器相连,但是服务器可以与服务器相连,问最少要设置多少台服务器 Input 多组用例,每组用例第一行为一整数n表示点数,之后n-1行每行两个整数a和b表示a和b之间有一条边,每组用例以0结束,以-1结束全部原创 2016-03-13 22:47:54 · 962 阅读 · 0 评论 -
POJ 3659 Cell Phone Network(树形DP)
Description 给出一棵点数为n的树,求这棵树的最小点覆盖 Input 第一行为一整数n表示树的点数,之后n-1行每行两个整数a和b表示树上a和b之间有一条边 Output 输出这棵树的最小点覆盖 Sample Input 5 1 3 5 2 4 3 3 5 Sample Output 2 Solution dp[i][0]表示i属于支配集,并且以i为根的子树都原创 2016-03-13 22:43:15 · 656 阅读 · 0 评论 -
POJ 1985 Cow Marathon(树的直径)
Description 给出一棵无向树,求树的直径 Input 第一行为两个整数n和m分别表示点数和边数,之后m行每行表示树的一条边 Output 输出树的直径长度 Sample Input 7 6 1 6 13 E 6 3 9 E 3 5 7 S 4 1 3 N 2 4 20 W 4 7 2 S Sample Output 52 Solution 树的直径裸题原创 2016-02-12 14:49:51 · 597 阅读 · 0 评论 -
POJ 2631 Roads in the North(树的直径)
Description 给出一棵无向树,求树的直径,即树上两点之间的最长距离 Input 每行三个整数a,b,c表示树上a点与b点之间有权值为c的一条边,以文件尾结束输入 Output 输出树的直径 Sample Input 5 1 6 1 4 5 6 3 9 2 6 8 6 1 7 Sample Output 22 Solution 先给出一个结论: 从任一点s出发原创 2016-02-12 14:44:34 · 830 阅读 · 0 评论 -
POJ 1947 Rebuilding Roads(树形DP)
Description 给出一棵有n个节点的树,问如何减去最少的边,得到一个含有p个节点的子树 Input 第一行两个整数n和p,之后n-1行每行两个整数a和b表示a和b间有一条边 Output 输出减去最少的边数 Sample Input 11 6 1 2 1 3 1 4 1 5 2 6 2 7 2 8 4 9 4 10 4 11 Sample Output原创 2015-11-01 14:12:27 · 995 阅读 · 0 评论 -
HDU 2196 Computer(树形DP)
Description 求树中每个点到所有节点的距离的最大值是多少 Input 第一行一个整数表示节点数,之后n-1行每行两个整数a和b表示a和b有一条边 Output 按顺序输出每个点到其他点距离的最大值 Sample Input 5 1 1 2 1 3 1 1 1 Sample Output 3 2 3 4 4 Solution 树形dp,由于对于一个原创 2015-08-07 10:50:36 · 593 阅读 · 3 评论 -
POJ 3107 Godfather(树形DP)
Description 给一颗n个结点的树,节点编号为1~n,问删除一个节点之后,让剩下的分支中节点数量最多的尽量少(可能有多种方案,按编号顺序输出) Input 第一行为一个整数n表示节点数,之后n-1行每行两个整数a和b表示a节点与b节点之间有一条边 Output 按顺序输出满足条件的点 Sample Input 6 1 2 2 3 2 5 3 4 3 6 Sampl原创 2015-08-06 15:18:50 · 924 阅读 · 0 评论 -
POJ 1463 && HDU 1054 Strategic Game(树形DP)
Description 给出一棵树,要求找到最少放几个士兵才能将所有点都看守到,每个节点的士兵只能看守临近一个的节点 Input 多组用例,每组用例第一行为节点数n,之后n行第i行输入第i-1个节点临近的节点,括号中的数表示临近的节点数m,之后m个数表示临近的节点下标,以文件尾结束输入 Output 对于每组用例,输出放置的最少士兵数 Sample Input 4 0:(1) 1原创 2015-08-06 11:48:02 · 468 阅读 · 0 评论 -
HDU 1011 Starship Troopers(树形DP)
Description 给出每个房间拥有的BUG数和能得到的能量数,然后给出每个房间的连通图,要到下一个房间必须攻破上一个房间,每个士兵最多消灭20个BUG,就算不足20个BUG也要安排一个士兵,在跟定士兵数量的情况下问最多可以得到多少能量 Input 多组用例,每组用例第一行为两整数n和m分别表示这张图的节点数以及给出的士兵数,之后n行每行两个整数表示这个节点的BUG数和能量数,最后n-1原创 2015-08-07 10:42:07 · 645 阅读 · 0 评论