倍增
Self-Discipline
在校大学生
展开
-
UVA-11354
题意:最小瓶颈路,给出一张n个点m条边的无向图, 每条边有一个危险度,有q个询问, 每次给出两个点s、t,找一条路, 使得路径上的最大危险度最小。思路一:并查集(按秩合并),求一个最小生成树, 任意两点在生成树上有唯一路径, 而且这条路径上的最大危险值一定最小。 但是n和q都太大, 如果直接顺着树走,每次询问最大复杂度O(n), 那么复杂度高达O(n^2),会超时。 并查集在用了路径压缩之后效...原创 2019-05-31 08:46:30 · 384 阅读 · 0 评论 -
HDU - 6394 Tree(树分块+倍增+dfs序)
题意:给出一棵树,然后每个节点有一个权值,代表这个点可以往上面跳多远,问最少需要多少次可以跳出这颗树。分析:树上弹飞绵羊,利用dfs序把树上节点变成连续区间序列,先dfs一次得到dfs序,然后按dfs序分块。倍增计算从某点跳x到哪个点,用cn保存它跳出这一块需要的次数,ne保存跳出这块会去的点。然后块内就暴力修改了。复杂度n*sqrt(n)。参考:https://www.cnblogs.c...原创 2019-07-20 00:57:24 · 157 阅读 · 0 评论 -
hdu5726 GCD(倍增+二分or线段树+预处理)
题意:给你n个数a1,a2,a3...an(n<=1e5,1<=ai<=1e9),给你q个询问[l,r]。问你gcd(al,al+1,al+2...ar)为多少?再问你有多少个pair(l',r')(1<=l'<=r'<=n)使得gcd(al',al'+1...ar')与gcd(al,al+1,al+2...ar)为多少?分析:方法一:倍增+二分。先rmq...原创 2019-08-03 21:26:03 · 185 阅读 · 0 评论