题目链接 一道神奇的点分治 貌似有很多做法,我觉得BIT要好些一些(雾 要求经过黑点数<k就用BIT区间查询前缀 对于每个点用 BIT[0,k-经过黑点数]的最大值+路径长度 使用点分治做到O(n*log22n) 貌似还有O(nlog2n)的做法(雾 1 #include<algorithm> 2
分类:
其他好文 时间:
2016-02-18 08:48:41
阅读次数:
180
【题面】 不虚就是要AK(czyak.c/.cpp/.pas) 2s 128M czy很火。因为又有人说他虚了。为了证明他不虚,他决定要在这次比赛AK。 现在他正在和别人玩一个游戏:在一棵树上随机取两个点,如果这两个点的距离是4的倍数,那么算czy赢,否则对方赢。现在czy想知道他能获胜的概率。 以
分类:
其他好文 时间:
2016-02-14 16:47:27
阅读次数:
270
【题面】 求一颗树上距离为K的点对是否存在 输入数据 n,m 接下来n-1条边a,b,c描述a到b有一条长度为c的路径 接下来m行每行询问一个K 输出数据 对于每个K每行输出一个答案,存在输出“AYE”,否则输出”NAY”(不包含引号) 数据范围 对于30%的数据n<=100 对于60%的数据n<=
分类:
其他好文 时间:
2016-02-13 23:13:30
阅读次数:
440
1棵树的话, 点分治+你喜欢的数据结构(树状数组/线段树/平衡树)就可以秒掉, O(N log^2 N). 假如是环套树, 先去掉环上1条边, 然后O(N log^2 N)处理树(同上); 然后再O(N log N)计算经过删掉边的路径数(在环上扫一遍, 数据结构维护).--------------
分类:
编程语言 时间:
2016-02-13 17:01:31
阅读次数:
378
题目:http://www.lydsy.com/JudgeOnline/problem.php?id=4016 最短路+点分治。。 首先要把最短路径树做出来吧。。于是先跑一遍spfa,然后bfs一遍就可以建出树了。。 然后点分。。对于以重心为根的那棵子树,一棵一棵子树拿出来,维护处dep和dis(到
分类:
其他好文 时间:
2016-02-09 01:18:49
阅读次数:
279
先跑出最短路的图, 然后对于每个点按照序号从小到大访问孩子, 就可以搞出符合题目的树了. 然后就是经典的点分治做法了. 时间复杂度O(M log N + N log N)-----------------------------------------------------------------
分类:
其他好文 时间:
2016-02-03 10:46:55
阅读次数:
284
/*点分治 将点一个一个讨论,找重心,讨论根节点,分别讨论子树。2152: 聪聪可可Time Limit: 3 Sec Memory Limit: 259 MBSubmit: 1400 Solved: 703[Submit][Status][Discuss]Description聪聪和可可是兄弟.....
分类:
其他好文 时间:
2016-01-18 19:02:46
阅读次数:
150
说白了就是树形dp嘛。。。用来解决树上路径点权统计问题。=>1,先找出整颗树的重心,YY一下;=>2.转化成有根树;=>3.求出经过根节点的两点之间距离;=>4.在子树中用同样的方法处理;=>然后就好了,累不想写
分类:
其他好文 时间:
2016-01-15 23:06:26
阅读次数:
137
可以说是点分治第一题,之前那道的点分治只是模模糊糊,做完这道题感觉清楚了很多,点分治可以理解为每次树的重心(这样会把数分为若干棵子树,子树大小为log级别),然后统计包含重心的整个子树的值减去各个子树的值,这样算出的就是与这个重心有关的情况的答案,比如这道题,求路径,那么就考虑在重心所在的子树中所有...
分类:
其他好文 时间:
2015-12-31 07:15:29
阅读次数:
149
首先考虑暴力,可以枚举每两个点求lca进行计算,复杂度O(n^3logn),再考虑如果枚举每个点作为lca去枚举这个点的子树中的点复杂度会大幅下降,如果我们将每个点递归考虑,每次计算过这个点就把这个点删掉,那么如果每次删掉的点是当前子树的重心,枚举点对的复杂度就只有O(logn),对于每次查询答案在...
分类:
其他好文 时间:
2015-12-31 07:13:35
阅读次数:
177