树分治
文章平均质量分 81
Cold_Chair
我XXX就是饿死,死外边,从这里跳下去,也不会再做你九条可怜一个测试点
展开
-
CF 434E 圣诞树(tree)
给你一颗大小为100000的树; 设S(x,y)路径上的点是d1,d2,…,dp 定义G (S(x,y))=sum(di*k^i)( mod y(质数) ) f(x,y)= G(S(x,y)) = x(mod y) 等于是1,不等于是0 问有多少个三元组(a,b,c),满足f(a,b) = f(b,c) = f(a,c)原创 2017-01-16 22:16:25 · 791 阅读 · 0 评论 -
动态dp学习小记
据说这东西猫锟在WC2018讲过,怎么一点印象都没有呢?当时应该是在冬眠 NOIP2018T6如果用动态dp去看就是一道裸题,不过因为询问是相互独立的,即修改没有时效性,可以直接用倍增代替动态dp。 先看一道题: P4719 【模板】动态dp 如果没有修改,这题就是树形dp入门题:没有上司的晚会 设f(x,0/1)f(x,0/1)f(x,0/1)分别表示以x为根的子树中,选x的最大独立集,不选x...原创 2018-11-20 22:46:41 · 434 阅读 · 0 评论 -
洛谷P3345 [ZJOI2015]幻想乡战略游戏
传送门 题解: 先考虑一个简单的问题:怎么在有修改的情况下快速求一个点作为补给站的答案。 注意到和路径有关,所以很容易想到点分树。 接着可以想到一个十分暴力的做法,就是修改后,每次枚举相邻的点,如果更优就走过去。 很容易想到因为每次重心不会移动太远,这个是可以过的,数据也不太好造来卡这个做法。 那么有没有稳定的做法? 还是每次枚举子树,假设现在在点x,枚举的子树是y,发现y的答案比x优,那么就走到...原创 2018-10-16 16:42:00 · 226 阅读 · 0 评论 -
party(最小割优化最大流或霍尔定理)
Description: 题解: 很容易想到一个做法就是: 1.先求出c个点的lca 2.接着求出每个点到lca的路径上经过的有哪些特产 3.然后二分答案,建图网络流 第三步可以用动态加边网络流优化掉那个log。 第二步可以用树链剖分+线段树优化,预处理每个点到其重链链顶的答案,用bitset优化,即可做到: 时间复杂度O(n log n∗m/32)O(...原创 2018-08-16 19:30:03 · 472 阅读 · 0 评论 -
口胡 2018.03.10【GDOI2018】模拟A组
那天我去了象征自由的组别,没有做这个组,但是这个组的题目还是很有意思的。 看了之后有很大启发,所以写一下。 T1【NOI2015模拟12.27】str: Description: 第一问一看是个回文自动机的裸题。 但是你发现第二问用回文自动机有点难搞。 转换后相当于把一棵trie反过来求第k大。 因为后缀自动机的fail边是原串反向前缀树。 于是可得广义后缀自动机得fa...原创 2018-03-16 12:24:49 · 386 阅读 · 0 评论 -
【清华集训2017模拟12.10】回文串(回文树+树链剖分)
Description:NYG 很喜欢研究回文串问题,有一天他想到了这样一个问题: 给出一个字符串 S,现在有 4 种操作: • addl c :在当前字符串的左端加入字符 c; • addr c :在当前字符串的右端加入字符 c; • transl l 1 r 1 l 2 r 2 :取出 S 的两个子串 S[l 1 …r 1 ],S[l 2 …r 2 ],现在 NYG想把前一个字符串变换为原创 2017-12-19 21:54:10 · 504 阅读 · 0 评论 -
【NOIP2017提高A组模拟10.5】Ping
题目大意:给出一棵n个节点的树,和一些树上的路径,求最少选出多少个点能使得每条路径里都至少有一个选出的点。 1<=n<=10^5题解:这题的经典版就是树是一条单链。初一的贪心做法是按照右端点排序,然后每次选右端点最前的区间的右端点,把覆盖它的区间delete掉,继续做,证明显然。 除去排序的复杂度,可以O(n)扫一遍做到。树上的话就比较6了。 随便选一个点为根,搞出dfs序,把各条路径的lca原创 2017-10-05 20:22:20 · 355 阅读 · 0 评论 -
【清华集训2017模拟】ces
Description: 1<=n<=1e5,1<=q<=m<=2e5题解:首先把用tajan把桥边全部找出来,桥边会把图分成若干个双联通分量。 把每个双联通分量并成一个点,桥边作为边,这会构成一棵树。显然,对于每个询问加k条边最多能去掉多少条桥边,就是用k条简单路径去覆盖这棵树,最多能覆盖多少条边。有一个很优的贪心,把k按1-q做,每次找到树的直径,答案加上直径的长度,把直径压成一个点,继续做原创 2017-08-18 21:51:11 · 610 阅读 · 0 评论 -
JZOJ 100019【NOI2017模拟6.26】A
题目大意: 1<=n<=10^5题解:假设有两点u,v其中v = i *u(2<=i<=n/u) 如果有一路径a,b经过了它们两,那么a,b就是不合法的路径。我们可以尝试找出这样的路径。先求出树的dfs序,设为dfn[x] end[x]为x的子树中最大的dfn[x’]使dfn[u] < dfn[v]:1.u是v的祖先:设g为u到v的路径中距离u最近的那个点。 则跨过u,v的路径a,b(dfn原创 2017-06-28 20:38:18 · 716 阅读 · 0 评论 -
【GDOI2019Day1模拟2019.4.28】盗梦空间(虚树+树形dp+树链剖分)
Description: 1<=n,sum(k)<=1e5 题解: 首先建出虚树。 然后考虑把所有的点分为三类: 1.虚树上的点 2.虚树上边(不包括虚树点)的点和伸出去的子树 3.不属于1、2类的点 对于虚树上的点,使用树形dp求出每一个点所有子树中第1长的和第2长的。 不属于1、2类点,可以对每个点所有伸出的子树预处理深度排序后的结果,或者用multiset动态维护 最难的在于第...原创 2019-04-28 20:14:05 · 681 阅读 · 0 评论