倍增算法
文章平均质量分 50
WerKeyTom_FTD
我是一只来自中山纪念中学高三的oier,请多多指教
展开
-
[bzoj3456]城市规划
题目大意给你n个点(存在顺序性),初始无边,你可以任意加边。求满足以下条件的连通图数量:无重边无自环。答案模479∗221+1479 * 2 ^{21} + 1DP我们设f[i]表示i个点对应的答案。 正难则反,我们可以用总数量减去不合法数量。 总数量为2C2i2^{C_i^2} 如何不重复不遗漏统计不合法数量? 我们可以枚举i点所在连通块的数量,然后其他乱连, 也就是f[i原创 2015-12-23 20:31:28 · 1534 阅读 · 0 评论 -
[bzoj4569][SCOI2016]萌萌哒
题目大意有一个无前导0的n位数,有m个限制形如[l1,r1]=[l2,r2],问满足条件的数有多少种,答案模10^9+7。倍增我们用ST表,f[i,j]表示[i,i+2^j-1]这一段。 那么初始时每一段单独成一个集合。 对于一个限制可以拆成log 份,然后进行集合合并。 然后呢,如果任意f[s,t]和f[i,j]属于同一集合,那么f[s,t-1]与f[i,j-1]以及f[s+2^(t-1)-原创 2016-05-06 19:23:52 · 2152 阅读 · 0 评论 -
[bzoj4722]由乃
题目描述由于一周目的由乃穿越到了三周目,并带来了巨大的影响,改变了三周目所有未来日记所有者的命运所以三周目的 神Deus准备不利用未来日记来决定把神的位置交给谁Deus特别崇拜某知名社会主义国家领导人,因为他的寿命比神 还长,所以他想钦定下一个卡密,而不通过选举他决定钦定三周目的由乃成为卡密,去和一周目的雪辉重逢(终于 做了一件好事了)但是,既然是钦定,那么肯定还是要做做样子的,以防某些来自香原创 2017-01-14 22:04:16 · 1169 阅读 · 1 评论 -
无限棋盘
题目描述无聊的小A在一个无限大的棋盘上玩游戏,这个棋盘由一个M*N的模板不停重复生成。例如,当模板为: honi hsin 时,我们会生成如下棋盘: …honihonihonihoni… …hsinhsinhsinhsin… …honihonihonihoni… …hsinhsinhsinhsin… 其中,该棋盘在任意一个方向都可以无限延伸。 现在小A在棋盘上随机挑选一个位置,又随原创 2017-04-06 09:46:33 · 711 阅读 · 0 评论 -
[bzoj4928][SDOI省队集训2017]dierti
题目描述对于一棵有根树,定义一个点u 的k− 子树为u 的子树中距离u 不超过k 的部分。注意,假如u 的子树中不存在距离u 为k 的点,则u 的k−子树是不存在的。 定义两棵子树是相同的,当且仅当不考虑点的标号时,他们的形态是相同的(儿子的顺序也需要考虑)。给定一棵n 个点,点的标号在[1,n],以1 为根的有根树。问最大的k,使得存在两个点u ̸= v,满足u 的k− 子树与v 的k− 子树相原创 2017-05-31 20:34:01 · 904 阅读 · 0 评论 -
[agc006c]Rabbit Exercise
前言一开始看成随机跳一个兔子让我感觉不可思议,于是很难。 如果理解对题意,相信这题不难做。题意n只兔子在数轴上。 有m种操作,每种操作找到一个编号的兔子,再随机选择一个编号和其相邻的兔子,然后让该兔子的位置改为与这只相邻编号兔子的对称位置。 问最后每个编号兔子位置的期望值。做法很容易发现可以用每次操作兔子的期望位置直接代替原位置,因此每次相当于xi=xi+1+xi−1−xix_i=x_{i+1原创 2017-09-25 22:08:22 · 637 阅读 · 0 评论 -
春思
题目大意求a^b的约数和。基础题分解出a的质因数即可,然后算等比数列和可以倍增。#include<cstdio>#include<algorithm>#include<cmath>#define fo(i,a,b) for(i=a;i<=b;i++)using namespace std;typedef long long ll;const int mo=9901;ll i,j,k,l原创 2017-09-11 22:27:23 · 436 阅读 · 0 评论 -
[agc003e]Sequential operations on Sequence
前言利用了经典性质的题。题目大意有一个数字串S,初始长度为n,是1 2 3 4 …… n。 有m次操作,每次操作给你一个正整数a[i],你先把S无穷重复,然后把前a[i]截取出来成为新的S。 求m次操作后,每个数字在S中出现的次数。做法考虑这样一个过程,solve(x,l)表示在第x次操作后的S的前l位,我们希望获取每个数在这里面的出现次数(这个函数返回一个数组)。 不妨设S[i]表示第i次操原创 2017-10-27 10:12:21 · 996 阅读 · 0 评论