摘要:题意:有n个村庄,m个事件。村庄一开始是从小到大连续的,有三种操作(1)D a为摧毁第a个村庄。(2)Q a为询问与第a个村子直接和间接相连的村子有多少个。(3)R 为恢复最近销毁的那个村庄思路:难得想的是询问操作,恢复操作用一个栈保存就可以了。#include #include #include ...
阅读全文
摘要:题意:有N条牛它们有一个自己的区间[s,e];题目输出的是有多少条牛能胜过自己,胜过的意思是如果牛j的区间能完全覆盖牛i的区间即为胜过。思路:这个可以转换到数轴上理解了,下图就为cow[j]胜过cow[i];所以只需先对左端点从小到大,右端点从大到小排序;再查询从右端点到最大值之间有多少个就是答案了...
阅读全文
摘要:所谓二叉搜索树(BST),就是每一个节点x,它的左子树中所有的关键字的值都小于x的关键字的值,而它右子树中所有的关键字的值都大于x的关键字的值。对于刚刚接触BST可以做做hdu 3791;hdu 3791 解题:可以用动态的创建指针,也可以用静态的数组,反正这个题的数据非常之小,用什么都无所谓了;动...
阅读全文
摘要:题目意思是给你n个顶点m条边,再给你每条边的权,和一个方向,那个输入可以参照poj1984,那个方向是没有用的,再下面有K个询问,求两点间的最短距离。我用了两种方法写此题,一种是RMQ+LCA模板#include#include#include#includeusing namespace std;...
阅读全文
摘要:题目的意思是给你一个案例,有n个顶点,和q个询问。再下来是n个顶点的权值,再是n-1条边。再下来是q行,当k=0时,就改a顶点的权值为b。当k>0时,为询问a到b两点距离的第k大的顶点。当两点的距离小于k时,就不会存在第k大的顶点了很显然是LCA,我以前使用tarjan算法,超时了。后来搜大神的代码...
阅读全文
摘要:给n顶点和m条边求任意两点的最短距离,只要找到他们的最近公共祖先就可以求出他们的最短距离,先处理后询问,只是很明显的离线LCA可以用tarjan离线算法。昨天做了一道类似的,此题和poj1330很接近,几乎是它的一个扩展。如果做个那题此题可迎刃而解。#include#includeusing nam...
阅读全文
摘要:本题的意思是说走k个顶点需要的最短路径,本题给你一颗树,我们只需DFS这颗树的最大深度R。如果k小于这个深度就是k-1,如果大于k,就是R-1+(k-r)*2;因为其他的边要走两次。#include #include #include #include #include #include using...
阅读全文
摘要:今天第一次学习(LCA)最近公共祖先算法,就做了这个题目,本题的意思就是给你一颗树,两个节点的最短路径上深度最小的节点,说白了就是LCA如有不懂得可以点击http://www.cnblogs.com/ka200812/archive/2011/08/02/2124984.html#include#i...
阅读全文