Description 我们知道一棵有根树可以进行深度优先遍历(DFS)以及广度优先遍历(BFS)来生成这棵树的DFS序以及BFS序。两棵不同的树的DFS序有可能相同,并且它们的BFS序也有可能相同,例如下面两棵树的DFS序都是1 2 4 5 3,BFS序都是1 2 3 4 5 现给定一个DFS序和 ...
分类:
其他好文 时间:
2018-04-24 00:20:23
阅读次数:
126
题面 "传送门" 正文 最暴力的 最暴力的方法:把所有询问代表的字符串跑一遍kmp然后输出 稍微优化一下:把所有询问保存起来,把模板串相同的合并,求出next然后匹配 但是这两种方法本质没有区别,都是暴力 不那么暴力的 我们对于所有的串建立一个AC自动机,把询问按照$y$排序,然后在AC自动机上面跑 ...
分类:
编程语言 时间:
2018-04-22 16:09:16
阅读次数:
240
题目传送门:http://acm.hdu.edu.cn/showproblem.php?pid=6035 题目大意:给你一棵树,树上每个节点都有一个颜色。 现在定义两点间的距离为两点最短路径上颜色集合大小,求该树上所有点对的距离之和。其中树上的节点个数$≤2*10^5$ 如果直接处理每一条路径上颜色 ...
分类:
其他好文 时间:
2018-04-19 10:36:04
阅读次数:
156
【传送门:BZOJ1803】 简要题意: 给出一棵有根有点权的n个点的树,有m个询问,每个询问输入x,k,输出以x为根的子树内的第k小值 题解: 树上主席树裸题 求一遍DFS序,然后因为每棵子树的序号是连续的,所以只要记录以x为根的子树的序号区间就可以了 然后利用前缀和思想求第k小值就行了 参考代码 ...
分类:
其他好文 时间:
2018-04-15 21:04:47
阅读次数:
158
题目链接 容易发现值为x的点只可能从值为x-1的点转移过来,所以我们把原序列连成一棵树,dfs序就是原序列的一种形式。 就可以直接求啦 ...
分类:
其他好文 时间:
2018-04-14 12:41:27
阅读次数:
151
http://codeforces.com/problemset/problem/570/D Tree Requests time limit per test 2 seconds memory limit per test 256 megabytes input standard input ou ...
分类:
编程语言 时间:
2018-04-09 13:24:48
阅读次数:
227
4817: [Sdoi2017]树点涂色 Description Bob有一棵n个点的有根树,其中1号点是根节点。Bob在每个点上涂了颜色,并且每个点上的颜色不同。定义一条路 径的权值是:这条路径上的点(包括起点和终点)共有多少种不同的颜色。Bob可能会进行这几种操作: 1 x: 把点x到根节点的路 ...
分类:
其他好文 时间:
2018-04-05 19:14:34
阅读次数:
129
题面 "传送门" Sol 我也不知道哪里来的题目哪里来的$OJ$ 子树变成$DFS$序后就是裸的树套树 cpp include define RG register define IL inline define Fill(a, b) memset(a, b, sizeof(a)) using na ...
分类:
其他好文 时间:
2018-04-04 18:03:02
阅读次数:
187
题目描述 Alice有n个字符串S_1,S_2...S_n,Bob有一个字符串集合T,一开始集合是空的。 接下来会发生q个操作,操作有两种形式: “1 P”,Bob往自己的集合里添加了一个字符串P。 “2 x”,Alice询问Bob,集合T中有多少个字符串包含串S_x。(我们称串A包含串B,当且仅当 ...
分类:
编程语言 时间:
2018-04-04 12:44:04
阅读次数:
205
Description "题目链接" Solution 在虚树上跑DP即可 关于虚树的建立,是维护一个最右链的过程 关键代码如下: c++ sort(A+1,A+k+1,cmp);//按dfs序排序 s[top=1]=1;//栈维护最右链 for(int i=1;i1&&dep[f] include ...
分类:
其他好文 时间:
2018-03-30 21:36:32
阅读次数:
162