Hnoi2014 世界树 Description 世界树是一棵无比巨大的树,它伸出的枝干构成了整个世界。在这里,生存着各种各样的种族和生灵,他们共同信奉着绝对公正公平的女神艾莉森,在他们的信条里,公平是使世界树能够生生不息、持续运转的根本基石。 世界树的形态可以用一个数学模型来描述:世界树中有n个种 ...
分类:
其他好文 时间:
2016-07-11 07:48:38
阅读次数:
158
题目链接 1.对于简单的版本n<=500, ai<=50 直接暴力枚举两个点x,y,dfs求x与y的距离。 2.对于普通难度n<=10000,ai<=500 普通难度解法挺多 第一种,树形dp+LCA 比赛的时候,我猜测对于不为1的n个数,其中两两互质的对数不会很多,肯定达不到n^2 然后找出所有互 ...
分类:
其他好文 时间:
2016-07-03 23:04:10
阅读次数:
258
显然每次走过的最小路程,就是按照dfs序走的总路程。 如果没修改的话其实是虚树。。 既然带了修改。。。其实就是维护关键点的dfs序。 用棵平衡树维护一下就好了,涉及到插入、删除、查找前驱后继、查找最大最小值。 算两点间路程还得求lca (所以这题就变成treap全套板子了。。。 1 #include ...
分类:
其他好文 时间:
2016-06-18 16:56:55
阅读次数:
128
睡前写题解。此题Pascal党有难度max的buff……毕竟C++有set这种黑科技,P党只好手写平衡树。然而这还不是最主要的,最大的代码难点在于此题有奇怪的边界处理,加了一堆特判,用封好的set大概会清晰很多。 脑补一下就会发现答案就是所有被选中的点所构成的虚树的边权和的两倍,走路的过程就是在虚树 ...
分类:
其他好文 时间:
2016-06-15 23:46:17
阅读次数:
431
http://www.lydsy.com/JudgeOnline/problem.php?id=3572 思路:建立虚树,然后可以发现,每条边不是同归属于一端,那就是切开,一半给上面,一半给下面。 ...
分类:
其他好文 时间:
2016-06-14 22:08:26
阅读次数:
197
还是虚树的题目啊... 如果只有一个询问,我们这么考虑,可以设dp[x]为只删除x子树内和x到父亲的边,使得x这棵子树内的能源岛屿都与x的父亲不连通的最小花费。 这样如果x本身是能源岛屿,那么dp[x]=fe[x],否则dp[x]=min(fe[x],sum{dp[son[x]]})类似这样。(fe... ...
分类:
其他好文 时间:
2016-06-08 00:15:12
阅读次数:
278
第一次学习虚树,就是把无关的点去掉。S里维护一条链即可。 1 #include <iostream> 2 #include <cstring> 3 #include <cstdio> 4 #include <algorithm> 5 #define LL long long 6 using name ...
分类:
其他好文 时间:
2016-05-22 21:21:55
阅读次数:
206
2286: [Sdoi2011消耗战
Time Limit: 20 Sec Memory Limit: 512 MB
Submit: 1815 Solved: 645
[Submit][Status][Discuss]
Description
在一场战争中,战场由n个岛屿和n-1个桥梁组成,保证每两个岛屿间有且仅有一条路径可达。现在,我军已经侦查到敌军的总部在编号为1的岛屿,而且...
分类:
其他好文 时间:
2016-05-12 17:11:23
阅读次数:
258
4.29(-84) bzoj 3572 世界树,感觉自己从来没有好好写过虚树,不懂单调栈那套理论,在bx2k的启发下知道了一个好写好懂的写法(就是常数大),先对要处理点的dfs序进行排序,然后两两求lca,再对所有数进行排序,感觉这个写法非常资瓷,然后这道题的关键点在于,在一条边上进行二分,好巧妙, ...
分类:
其他好文 时间:
2016-04-29 21:58:51
阅读次数:
114