数据结构----数链剖分
长沙橘子猫
这个作者很懒,什么都没留下…
展开
-
Educational Codeforces Round 47 F. Dominant Indices 线段树合并/长链剖分
F. Dominant Indices题意:给一颗以1为根的树,设d[u][x]d[u][x]d[u][x]为uuu子树中距离uuu为xxx的点的数量,对于每个点uuu,求最小的xxx使得d[u][x]d[u][x]d[u][x]最大解法:线段树合并:对于每个子树,用一颗线段树维护其d[u][x]d[u][x]d[u][x]的最大值,然后向上走不停的线段树合并即可。长链剖分:对于每个子树...原创 2019-11-08 00:13:51 · 341 阅读 · 0 评论 -
洛谷 P3384 【模板】树链剖分
题目树链剖分学自这位大佬:树链剖分原理和实现,讲的非常详细,学习树链剖分需要先会lca,线段树等先行知识,我只简单讲讲,树剖第一步需要dfs求出每个节点的父节点,以及每个节点的以它为根的子树的大小,和它的重儿子,第二个dfs则开始重链剖分,求出每个节点的所在重链的顶端,给每个节点安排线段树的编号,接下来建线段树,然后求两点路径中的最大值以及和(线段树操作),就是不停的将两点跳到所在链的顶端,直...原创 2018-09-09 10:18:26 · 157 阅读 · 0 评论 -
洛谷 P3313 [SDOI2014]旅行 树链剖分+动态开点线段树
P3313这个题要根据每个城市信仰的宗教建线段树,但是这样的话最多会有1e5个线段树,所以要动态开点(其实就是主席树思想),先把树用重链剖分,剖出来每个点有在线段树上对应的区间,所以线段树共用这一套区间,问题就简单了,至于修改城市的宗教,只需把原来宗教那个线段树的对应区间清0,在修改后宗教的那个线段树再加上一个新的点就行。#include<cstdio>#include&l...原创 2018-10-15 19:02:25 · 206 阅读 · 0 评论 -
2018-2019 ACM-ICPC Brazil Subregional Programming Contest 寒假自训第六场
今天终于没爆0了,但是速度慢了,漏了C题付队的题解B. Marbles题意:有n对数(xi, yi),每次操作可以选择一个正数u,使得这对数变成(xi-u, yi)或(xi-u, yi-u)或(xi, yi-u),两个玩家轮流操作一次,谁先把一对数变成(0,0)谁赢。思路:不是把所有数都变成(0,0)才赢,所以不是nim博弈,因此直接写没法写,但是我们转化一下,如果我把一对数变成了...原创 2019-02-03 20:38:37 · 999 阅读 · 0 评论 -
2019西北工业大学程序设计创新实践基地春季选拔赛(重现赛) CEGHI 题解
C.Chino with Queue思路:裸的状压dp,大家可以搜索旅行商问题状压dp解法,和这个一样。设d[ u ][ s ] 为 u 排在第一位,排队的人的集合为 s 所能得到的最优值,那么对于当前的d[ j ][ i ],我们找一个集合 i 中没有出现的同学 k,那么令 k 排在第一位得到转移方程:d[ k ][ s | (1<<k)]=max( d[ k ][ s | ...原创 2019-04-07 01:08:25 · 287 阅读 · 0 评论 -
2019 西安邀请赛 BEJ题解
B. Product 点这里 E. Tree题意:有三种操作:分别是树上两点路径上的点or一个数,and一个数和查询两点路径异或和是否等于t。思路:首先树链剖分转化成线段树区间and和区间or,此时复杂度已经nlogn^2,不能再加log了,所以我们来用tag降低复杂度,我们用二进制来表示区间状态,设S=(1<<30)-1,例如:101,表示区间的1和4的个数为奇数个,2的...原创 2019-09-08 08:49:00 · 901 阅读 · 5 评论