
倍增
Mys_C_K
人生有许多道:曾经踏足的是道,即将踏往的也是道,那什么才是道呢?唯有脚下走的才是道。一切精神或者物质都归于虚无,然后从混沌中衍生出三万道。在悲喜间涉足一条无数前人经历过,且将有无数后人奔赴的道,无论是否已经或者将要到达彼岸,然后便不再回头或是左顾右盼,即使有些道繁盛至极,夜灯如昼,无数人一浪又一浪的涌去,造就了世人皆知的辉煌;即使有些道草木凋敝,荒草丛生,只等勇敢的开拓者斩开荆棘,创造一片天地;这些都无所关,无所在意,彼岸何如、来日何方甚至过往旧事都化作一缕云烟,飘渺碧霄,我自撷高山之月色,独随足落处往行。
展开
-
codeforces 331 D3.Escaping on Beaveractor - 线段树 - 基环树 - 倍增
传送门 题目大意:平面上有有些有向线段,平行于轴,当走到有向线段的时候自己的方向就要变成其方向,自己速度1。给定这些有向线段,多组数据,每组给出初始位置和初始方向和时间,问是否会走出边界,如果不,输出最后在哪里,否则输出离开边界时候的坐标。数据都是1e5,时间1e15。 题解:题目本身很简单,把所有东西离线下来,用线段树处理出从询问点或者某个有向线段的箭头处开始走会走到哪一个点方向发生转折,以原创 2018-02-03 21:53:13 · 508 阅读 · 0 评论 -
[Snoi2017] bzoj 5017 - 炸弹 - tarjan - 倍增
注意到一个炸弹爆炸后,最终爆炸范围一定是一个区间,只需要维护这个区间按即可。用倍增表维护出,一个炸弹爆炸之后,能引爆的所有炸弹中,左、右端点最远的两枚炸弹,从当前向这两个连边;而其余炸弹可以不用管。然后对于这个图跑tarjan缩点,也就是同一个强连通分量里面的炸弹可以相互引爆,共享左右端点;然后每个点的区间就是其所有后继状态的并,最后询问这个区间内有多少炸弹即可。#include<ios...原创 2018-04-17 19:12:15 · 297 阅读 · 0 评论 -
吊打全世界 - kruskal重构树 - 主席树 - 倍增
标题不是我起的不要D我惹 题目大意:给张无向图,多次询问是否存在从s到t的路径满足前半段路程点编号<=l,后半段点的编号>=r。 题解:一句话题解:分别建出kruskal重构树后二维数点即可。 (还有一个LCT做法并不想说) (卡常使我快乐)#include<iostream>#include<cstring>#include<cstd...原创 2018-09-04 21:08:21 · 215 阅读 · 1 评论 -
statement - 基环树 - 虚树 - 倍增
这个题写的真爽翻了。题目大意就是给你一个树和基环树森林(内向),边有权,每次询问给你两个点集,问所有黑点到白点的路径中,边权最大值最小是多少。题解:首先考虑树,直接建出虚树来跑一遍dfs即可。然后每个环会选出一些点来,那些点先计算出一个贡献,你只要把环倍长然后那些点排个序,在上面做倍增即可。#include<iostream>#include<cstring>#i...原创 2018-09-27 09:24:46 · 265 阅读 · 0 评论 -
隔热板 - 二分 - 倍增
题目大意:平面上n个点,你要画m条直线,使得任意一个点和原点的连线与这m条直线中的至少一条相交(不考虑一些乱七八糟的重合情况),并且使得原点到m条直线的最小距离最大。n≤104n\le10^4n≤104。题解:先二分答案,问题转为每个区间至少一个点,去掉包含并倍长环,在上面做贪心,用倍增维护即可。#include<bits/stdc++.h>#define rep(i,a,b) ...原创 2018-10-15 16:33:30 · 130 阅读 · 0 评论 -
codeforcs 1063F. String Journey - dp -SAM - 主席树/线段树合并 - 子串定位 - 倍增
题目大意:给你一个长为nnn的字符串SSS,求最大的kkk,使得能够找出kkk个不重叠的子串t1…tkt_1\dots t_kt1…tk,使得∀i∈[1,k),∣ti∣&amp;amp;gt;∣ti+1∣\forall i\in[1,k),|t_i|&amp;amp;gt;|t_{i+1}|∀i∈[1,k),∣ti∣&amp;gt;∣ti+1∣,并且ti+1t_{i+1}ti+1是tit_iti的子串。n≤...原创 2018-10-16 13:23:23 · 323 阅读 · 0 评论 -
摧毁图状树 - 线段树 - 倍增
题目大意:给你一棵无权树,对于每个k=1…n求:每次你可以给一个点x到其k级祖先的路径上的所有点打上删除标记。问最少多少次可以把所有点打上删除标记。n≤105n\le10^5n≤105题解:考虑k怎么做,显然先把叶子涂黑,然后每次涂黑一个点,就把其k级组先拿出来,放进堆里。每次选择堆中深度最大的一个点,若其未被涂黑,则涂黑,并重复上述操作。于是可以注意到答案是O(x+(n-x)/k)级别...原创 2018-11-19 09:55:39 · 441 阅读 · 0 评论 -
道路 - 矩阵乘法 - 倍增
题目大意:给定一张图GGG,求∑i=1kiTGi,T,∣G∣≤100,k≤109\sum_{i=1}^ki^TG^i,T,|G|\le100,k\le10^9∑i=1kiTGi,T,∣G∣≤100,k≤109题解:一些显然的做法是把那个幂次拆成斯特林数然后就是要求从路径上再选出若干条不同的边的方案数,这个就可以直接拿来倍增做到O(n^5lgk)了。考虑直接对这个倍增:ST(k)=∑i=1...原创 2019-05-02 20:21:41 · 808 阅读 · 0 评论