题目大意:给定一棵树,多次询问到三个点距离之和最小的点和距离
首先易知到两个点距离之和最小的点一定在两点间的路径上
于是到三个点距离之和最小的点一定在两两之间路径的交点上
然后很容易就会知道这个交点一定是其中两个点的LCA(其实是我不会证)
此外为什么不会是三个点共同的LCA呢?因为三个点共同的LCA一定是至少一对点的LCA 证明略(其实我也不会证)
然后就是倍增LCA的问题了 我的倍增...
分类:
其他好文 时间:
2014-11-03 16:28:39
阅读次数:
219
题目大意:给定一棵森林,每个点有权值,提供两种操作:
1.查询两点间路径上第k小的权值
2.将两个点之间连一条边 保证连接后仍是一座森林
可持久化线段树部分同Count On A Tree 只是这道题加了个连接操作
对于连接操作我们要用到启发式合并 就是把小的那棵树暴力重建 很简单的一个操作但是可以证明是均摊O(nlogn)的
大小我用了并查集 其实记录根就可以了
此外本题的多组数据是...
分类:
其他好文 时间:
2014-10-20 13:36:39
阅读次数:
291
题目大意:给定一棵树,每个节点有权值,询问两个节点路径上的权值第k小
这题很卡时间。。。
树链剖分+二分+树套树的O(nlog^4n)做法可以去死了
没有修改操作,树链剖分+二分+划分树O(nlog^3n),还是死了
我怒了,裸学了一发可持久化线段树(不看任何代码OTZ,我是怎么做到的0.0),二分+主席树,O(nlog^2n),居然还是死了!
最后发现我SB了,完全没有必要二分,直...
分类:
其他好文 时间:
2014-10-13 20:02:37
阅读次数:
373
跟去年NOIP某题基本一样。最小生成树之后,就变成了询问连接两点的路径上的权值最大的边。倍增LCA、链剖什么的随便搞。块状树其实也是很简单的,只不过每个点的点权要记录成“连接其与其父节点的边的权值”,然后暴力LCA时不要用LCA的值更新答案了。 1 #include 2 #include 3 ...
分类:
Web程序 时间:
2014-10-04 10:29:26
阅读次数:
454
题目大意:给定一个n个点m条边的无向连通图,k次询问两点之间所有路径中最长边的最小值
NOIP2013 货车运输,几乎就是原题。。。只不过最小边最大改成了最大边最小。。。
首先看到最大值最小第一反应二分答案 但是二分答案O(kmlogn)明显做不了 这里我们考虑最小生成树
先生成一棵最小生成树,然后每次询问利用倍增LCA求出路径上的最大权值即可
本蒟蒻居然把LCA写挂了。。。 而且样例还过...
分类:
Web程序 时间:
2014-10-03 17:28:54
阅读次数:
275
实验对象——2013 noip day1 T3本来可以直接用倍增lca解决。。但是我比较的扯淡。。所以用树链剖分来搞和普通点权不同的是,对于一颗树来说,每一个点的点权被定义为他的父亲到他的边权,所以与一般的树链剖分相比,最后统一到一条链上时,线段树维护的一边端点要加1。。其他的就没了。然后注意往上跳...
分类:
其他好文 时间:
2014-07-28 19:14:54
阅读次数:
616