
倍增
文章平均质量分 92
zxyoi_dreamer
退役了退役了爬了爬了,搞个锤子算法竞赛,不如好好享受大学生活。
展开
-
【X Round -1 】 树上后缀排序(基数排序)
传送门没有题解:正确题意见讨论区。我可算是明白为什么题意那么诡异了。因为这样就可以直接基数排序,不用建Trie了。(出题人真是打得一手好算盘代码:#include<bits/stdc++.h>#define ll long long#define re register#define cs constcs int N=5e5+7;int n;char s[...原创 2019-11-22 11:28:24 · 255 阅读 · 0 评论 -
【校内模拟】祝著节(树上倍增)(最小生成树)
简要题意:给一张连通无向图,每条边有边权。你需要把边分成两个集合。定义一个合法的生成树为分别包含两个集合中至少一条边的树。请问你有多少种划分方式,使得最小的合法生成树边权和为XXX题解:首先手玩+感性理解+理性证明可以知道满足条件的最小生成树与真实最小生成树最多相差一条边。设真实最小生成树边权之和为sumsumsum。当sum>Xsum>Xsum>X,显然无解。...原创 2019-11-05 21:06:46 · 194 阅读 · 0 评论 -
【校内模拟】耍望节(倍增)(KMP)
简要题意:给你一个残缺的串SSS,里面有一些空位,你需要填充里面的空位使得TTT是SSS的字串。多次询问字典序第kkk小的填充方案,输出哈希值。题解:倍增裸题。反正我这辈子都在考场上写不出字典序倍增考虑建立KMP自动机,状态[i][j][i][j][i][j]表示已经决定了前i−1i-1i−1个字符的填充,当前匹配到了第jjj个字符。选择siz最大的节点作为后继节点。预处理倍增后在...原创 2019-11-05 18:28:09 · 187 阅读 · 0 评论 -
【UOJ#284】快乐游戏鸡(长链剖分)(单调栈)
传送门我TM就随手一写。UOJ速度榜rk4的同时,加上读优之后UOJ码长榜第二,把fread优化去掉后就成码长榜第一了???某种意义上从侧面证明了这个做法的优越性题解:考虑什么时候能够从sss走到ttt,当且仅当死亡次数已经达到了路径上的www最大值,这个可以倍增求一下。也就是说在死亡次数达到maxw\max wmaxw之前,我们只能一直死,那么显然我们希望能够早死早超生。维护一...原创 2019-09-29 18:02:44 · 517 阅读 · 0 评论 -
【模板】【洛谷5408】第一类斯特林数·行(倍增)(NTT)
传送门题解:首先我们设第一类斯特林数生成函数为Fn(x)=∑i=0nsn,ixi=xnˉF_n(x)=\sum_{i=0}^n s_{n,i}x^i=x^{\bar n}Fn(x)=∑i=0nsn,ixi=xnˉ则对于奇数的nnn,可以直接递归处理Fn−1F_{n-1}Fn−1,然后O(n)O(n)O(n)乘上一个一次多项式。对于偶数的nnn,可以处理出Fn/2F_{n/2}Fn...原创 2019-08-12 21:07:23 · 295 阅读 · 0 评论 -
【模板】【洛谷P5396】第二类斯特林数·列(倍增)(NTT)
传送门题解:考虑第二类斯特林数的列生成函数Fk(x)=∑i=kSi,kxiF_{k}(x)=\sum_{i=k}S_{i,k}x^iFk(x)=∑i=kSi,kxi根据递推式Sn,i=Sn−1,i−1+iSn−1,iS_{n,i}=S_{n-1,i-1}+iS_{n-1,i}Sn,i=Sn−1,i−1+iSn−1,i我们有Fk(x)=x1−kxFk−1(x)F_k(x)=\fr...原创 2019-08-13 21:22:00 · 241 阅读 · 0 评论 -
【51nod1628】非波那契树(树上倍增)(二次剩余)
传送门题解:看到模数是1e9+91e9+91e9+9并且题目和斐波那契有关系,熟悉二次剩余的都知道这道题要用斐波那契通项公式,因为555在%1e9+7\%1e9+7%1e9+7下是二次非剩余,而在%1e9+9\%1e9+9%1e9+9下是二次剩余,根为383008016383008016383008016。对于斐波那契有通项公式:Fibi=(1+5)i−(1−5)i5Fib_i=\frac...原创 2019-07-24 20:19:37 · 219 阅读 · 0 评论 -
2019.04.01【校内模拟】River(贪心)(倍增)
传送门解析:显然在每个点的时候,决策是确定的,我们将aaa数组扩大一倍,设nxtinxt_inxti表示当前处于时间周期中的iii位置,进行下一步操作需要的最少时间,则:nxti=mini≤j<i+m(aj+j)−inxt_{i}=\min_{i\leq j < i+m}(a_j+j)-inxti=i≤j<i+mmin(aj+j)−i直接维护后...原创 2019-04-01 21:47:46 · 149 阅读 · 0 评论 -
2019.03.21【SPOJ-QTREE2】Query on a tree II(树上倍增)
传送门虽说树剖+dfs序也可以做,但是显然没有倍增代码短。都是倍增基础操作就不写题解了。代码:#include<bits/stdc++.h>#define ll long long#define re register#define gc get_char#define cs constnamespace IO{ inline char get_char(){...原创 2019-03-21 19:00:57 · 150 阅读 · 0 评论 -
2019.02.26【九省联考2018】【BZOJ5253】【洛谷P4384】制胡窜(后缀自动机SAM)(树上倍增)(线段树合并)
BZOJ传送门洛谷传送门解析:神题啊。。。看了shadowice的题解,不过他有的地方写错了,让我困惑了好一阵,所以这里再写一篇题解。不过基本思路和叙述都和shadowice差不多,修改了一些他写错了的地方。题目要你求一个东西:给出一个字符串和它的某一个子串,问在原串上切两刀(不重复),使得切出来的三个串中至少有一个包含一个该子串,有多少种方案?正难则反,考虑它的对偶问题,切出来的三个...原创 2019-02-26 23:07:40 · 260 阅读 · 0 评论 -
2019.02.28【HAOI2018】【BZOJ5302】【洛谷P4493】字串覆盖(后缀自动机SAM)(线段树合并)(倍增法)
BZOJ传送门洛谷传送门解析:乍一看十分毒瘤,仿佛不可做。仔细分析,其实是有点门道的。其实贪心可以发现,就是让PPP的子串尽可能在TTT上匹配,且尽可能向前匹配,而且匹配还不能相交。。。。匹配匹配多次匹配显然就是需要维护right集合的,好的上线段树合并。我们先建立对AAA建立后缀自动机,然后将BBB放上去跑匹配。显然这时候每一个点匹配的位置都是前缀匹配的位置,换句话说,现在每个...原创 2019-03-01 07:57:05 · 254 阅读 · 0 评论 -
2018.12.12【BZOJ5192】【洛谷P4271】New Barns(动态维护倍增数组)
BZOJ传送门洛谷传送门解析:本来这道题ldw说是什么动态点分治?然后被我成功用动态维护LCA水过去了。思路:一看直径,就是最远距离,但是这个显然用O(n)O(n)O(n)的DP每次来一下是不行的。那么重点就在距离上面,树上距离可以用什么东西维护?LCA+深度就可以O(logn)O(\log n)O(logn)算出两点距离。所以我们只需要维护每棵树的当前直径的左右端点,新加入一...原创 2018-12-12 11:45:42 · 299 阅读 · 0 评论 -
2018.11.08【CodeForces989】E. A Trance of Nightfall(矩阵快速幂)(倍增)
传送门解析:考场上本来想写倍增来着结果发现这个东西可以矩阵快速幂转移,所以倍增数组就用来优化矩阵快速幂了。。。(省去每次求出转移矩阵的一点常数)如果只有一次询问,我们只需要求出每个点在跑了mmm次后以及每条线在跑了mmm次后到达目标点的距离。这个显然只需要把每个点走m−1m-1m−1次的概率DPDPDP出来计算直线最大,因为直线需要走一步到点上面,然后把每个点走mmm次的概率求出来,所有点...原创 2018-11-08 15:20:03 · 279 阅读 · 1 评论 -
2018.11.01【NOIP训练】图论(树上倍增)(线段树)(DFS序)(离线处理)
传送门解析:有一道差不多。但是我用了在线算法做的题:链接这里用一种好想的多的离线算法来做这道题。思路:其实还是断边,将一个询问变成两个来做显然需要断的是两个点路径中点。然后将询问分为两类处理,root=u,ban=vroot=u,ban=vroot=u,ban=v,uuu在vvv的子树中或不在vvv的子树中,其实就算v==lcav==lcav==lca,我们还是可以这样做,但是需要修...原创 2018-11-01 19:17:13 · 224 阅读 · 0 评论 -
2018.10.31【校内模拟】一些情报(树上倍增)
传送门解析:真的,这道题的算法就只有树上倍增,但是考场上还是考虑打暴力吧(AK大佬请无视)。。。毕竟还是太难码了QAQ。思路:其实标准题解已经说的很清楚了。。。而且这个解析真要写起来差不多就是代码那么难写,所以要问我的挑个我没忙的时间来问吧。。。代码:#include<bits/stdc++.h>using namespace std;#define ll lon...原创 2018-11-01 16:08:25 · 162 阅读 · 0 评论 -
2018.10.14【NOIP提高练习】01串(倍增)(字符串哈希)
传送门解析:其实我们直接处理出每个数向后倍增能够到哪个数,以及它倍增hashhashhash出来的值是多少就行了。然后直接倍增处理出每个位置迭代nnn次的01串的hashhashhash值就行了,把目标串也hashhashhash一下。代码...原创 2018-10-14 16:45:31 · 356 阅读 · 0 评论 -
2018.09.25【洛谷P4472】【BJWC2018】八维(字符串哈希)(倍增)
传送门解析:以后再也不把一个变量名当成另一个的子串了。。。调了我好久。思路:显然这道题不哈希没法做。然而串长有1e91e91e9直接做显然不行。我们可以考虑倍增法,将所有长度为2kk2^{kk}2kk字符串的哈希值都预处理。然后倍增得到长度为KKK的字符串。由于八个方向之间的计算互不影响,所以我们分开算八次。代码:#include<bits/stdc++.h>...原创 2018-09-25 20:17:44 · 622 阅读 · 0 评论