随笔分类 -  图_树

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