随笔分类 - 图_树
摘要:D题,LCA是很明显的。要注意的是,因为是除法,所以最多可以除x>2的有64次,当大于64时可以直接返回0。而且注意到可能会有很多值为1的边,可以使用路径压缩,把边为1的边压缩掉,类似于并查集的路径压缩。之前只压缩到LCA,一直TLE,可以直接压缩到它们的根节点。#include #include ...
阅读全文
摘要:这题不难,当时想出来了,可是却写不出来~~现在慢慢写回来,也写得好挫~可以知道,被攻击的城市必定可以组成一棵树,然后,传送到的点必定也是城市之一。如果出发后回到原点,则需要2E,E是树的边数,则2E-D就是答案,D是树中直径。我写得好锉~#include #include #include #inc...
阅读全文
摘要:D. Tree Requeststime limit per test2 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputRoman planted a tree consisting ...
阅读全文
摘要:T_T为毛会这样子,我的写就是过不了,。。。。。。。其实这题不难,很容易想到吧,我一开始也想着用枚举这类方法,但复杂度实在不敢想,没想到,真的是用这种方法。。今天学了一个叫树的重心,可以使分治的子树点数大致相等,降低了递归的层次吧。。。嗯,这题的复杂度,怎么的也有o(n^2)以上,而且n=40000...
阅读全文
摘要:树的重心,EASY题。树的重心定义为:找到一个点,其所有的子树中最大的子树节点数最少,那么这个点就是这棵树的重心,删去重心后,生成的多棵树尽可能平衡. 实际上树的重心在树的点分治中有重要的作用,可以避免N^2的极端复杂度(从退化链的一端出发),保证NlogN的复杂度,利用树型dp可以很好地求树的重心...
阅读全文
摘要:水一发,最小生成树。注意不连通情况。 1 #include 2 #include 3 #include 4 #include 5 #include 6 #define LL unsigned __int64 7 using namespace std; 8 9 cons...
阅读全文
摘要:BFS+强连通。输出max(缩点后出度为0的点数,缩点后入度为0的点数)。 1 #include 2 #include 3 #include 4 #include 5 #include 6 #define LL unsigned __int64 7 using...
阅读全文
摘要:这道题以前好像在哪遇到过。注意树的每一条边都是桥,所以,桥两端的点要到达对方是必须通过这条边的。于是,可以把边由小到大排序,利用并查集,这样,每加一条边就连通了一部分,而随着权值的增大,必定是桥两端到达对方经过的最大的边。于是总的权为左边集合数*右边集合数*桥的权值,就可以求出最大值和了。求最小值和...
阅读全文

浙公网安备 33010602011771号