Icefox的博客

生活不止眼前的苟且,还有诗和远方。

luogu4714 「数学」约数个数和(组合数学+miller_rabin判素数)

luogu6月月赛E。 当时绝对是脑抽了 其实O(wK)O(wK)O(wK)的暴力递推还是可以写的呀… 令n=∏pqiin=∏piqin=\prod p_i^{q_i} 我们发现可以分开讨论每一个pqiipiqip_i^{q_i},最后乘起来就好了,且只跟次数q有关 设f[k][q]f[...

2018-06-23 17:43:10

阅读数 111

评论数 0

Wannafly挑战赛18

https://www.nowcoder.com/acm/contest/129#question A.序列(组合数学) -2和0.5一样多,且都为偶数,枚举一下具体个数就好了 O(n)O(n)O(n) 考时ZZ了,不会跳了过去…很久以后才A掉gg B.随机数(矩阵快速幂) 设f[i]...

2018-06-22 23:09:24

阅读数 78

评论数 0

bzoj4037 [HAOI2015]数字串拆分(矩阵快速幂+dp)

对于计算f[n],我们显然可以构造出m*m的转移矩阵A来矩阵快速幂求。 然后我们考虑最后的答案,如果是分成了k个数:a1,a2,…,ak。 那么结果就是Aa1+a2+...+ak=Aa1∗Aa2∗...∗AakAa1+a2+...+ak=Aa1∗Aa2∗...∗AakA^{a_1+a_2+.....

2018-06-11 21:53:22

阅读数 184

评论数 0

bzoj4589 Hard Nim(博弈论+fwt+快速幂)

搞出生成函数,把它异或卷积n次即可,最后答案就是0的系数。 fwt之后直接快速幂即可。再ifwt回来。 复杂度O(mlogm+mlogn)O(mlogm+mlogn)O(mlogm+mlogn) #include <bits/stdc++.h> u...

2018-05-25 14:42:05

阅读数 160

评论数 0

bzoj4891 [Tjoi2017]龙舟(pollard-rho+素数检测)

这题主要问题在于我们要求一个大数对大数的逆元。 我们考虑把大模数分解质因数之后就可以O(mlogV)O(mlogV)的上下约分,然后看分母是否和大模数互质,以判断是否存在逆元。然后这个大数如何质因数分解呢?我们可以用pollard-rho+miller-rabin来做。复杂度O(n1/4)O(n...

2018-04-18 14:48:32

阅读数 216

评论数 0

bzoj1408 [Noi2002]Robot(欧拉函数+快速幂)

这题…因缺思厅啊qaq 就…就直接搞就好了。 因为欧拉函数是积性函数,第一问第二问互相搞一搞就好了。 第三问用总的减去第一问第二问的答案即可。 因为∑d|nϕ(d)=n\sum\limits_{d|n}\phi(d)=n,所以总的就是m-1(此题要求ϕ(1)=0\phi(1)=0)

2018-04-07 16:38:51

阅读数 77

评论数 0

bzoj3209 花神的数论题(数位dp+快速幂)

考虑有x个1的有s[x]个,那么答案就是∏xs[x]\prod x^{s[x]} 那么我们现在的问题就是如何求<=n的数中有几个数的二进制表示有x个1.我们先处理出f[i][j]表示i位数有j个1的方案数,然后加上大小的限制,搞一搞就好了。我的写法是求比n小的有多少个,所以要给n++ 复...

2018-04-05 12:20:45

阅读数 82

评论数 0

bzoj1965 [Ahoi2005]SHUFFLE 洗牌(快速幂+乘法逆元+快速乘)

我们发现第x张牌经过一次洗牌后会变成第2x%(n+1)张。 因此第x张牌经过m次洗牌会变成第x2m%(n+1)x2^m\%(n+1)张牌。 我们就是要求x2m≡lmodn+1x2^m\equiv l \mod n+1,因为n+1肯定是奇数,所以(2,n+1)=1. 所以x=l∗inv(2)m...

2018-04-04 10:55:08

阅读数 90

评论数 0

bzoj3992 [SDOI2015]序列统计(NTT+多项式快速幂+生成函数)

首先类似实数域的对数,我们在模意义下有离散对数ind。设模数为m,m的原根为g,则ind(i)=j表明gj≡imodmg^j\equiv i \mod m。根据原根的性质,我们知道{ind(x)}和{x}是一一对应的。 类似对数,我们可以把模意义下的乘法运算化作模意义下的加法运算: ind(x...

2018-04-03 10:53:46

阅读数 112

评论数 0

bzoj5190 [Usaco2018 Jan]Stamp Painting(dp+计数)

一共有n个格子,m种颜色,你每次可以 把连续K个格子涂成一种颜色。问你最后有多少种 涂色结果。(不能留有空白格子) 我们考虑怎样的结果序列是合法的,显然必须有 一段长度为k的连续区间为同一颜色,因为你最后一下 肯定要刷k个相同。我们可以发现,只要满足有这么一段 就都是合法方案。因此我们...

2018-03-13 09:35:21

阅读数 272

评论数 0

CF225E Unsolvable(数论)

z需要满足的条件就是z=2t−1z=2^t-1,且t+1t+1是梅森素数。 梅森素数就是满足2p−12^p-1为素数的素数p。

2018-03-10 23:35:12

阅读数 279

评论数 0

CF603B Moodular Arithmetic(数论+快速幂)

首先k=0时,答案就是pp−1p^{p-1}k=1时,答案就是ppp^pk>=2时答案就是pp−1mp^{\frac{p-1}{m}},其中m为k mod p意义下的order。根据费马小定理,我们有kp−1≡1mod pk^{p-1}\equiv1\mod\ p ,所以m一定是p-1的因数...

2018-03-09 22:51:16

阅读数 116

评论数 0

bzoj5193 [Usaco2018 Feb]Cow Gymnasts(数学)

我们考虑n个台子上的牛最少的一个台子上有m只,记这个台子为i,则对于所有的j≡i(modg)j \equiv i \pmod{g},g=gcd(N,m)g = \gcd(N,m),台子j上的牛也必为m只。其余台子上的牛最多m+1只,且具有周期性,即以g为周期。具体证明请参见官方题解:传送门因此对于...

2018-03-04 22:14:25

阅读数 492

评论数 0

CF870E points, Lines and Ready-made Titles(并查集+图论+快速幂)

我们把每条线看做并查集上的一个点,那么图上的每个点相当于连接了两条线。我们去维护一下每个联通快内有多少条边,是否有环。如果没环,也就是n个点,n-1条边,是一棵树,由于每条边最多只能贡献一个点,所以显然不能实现n个点的情况。总情况数为2^n -1。如果有环,可以实现所有情况,总情况数为2^n。都乘...

2017-10-18 10:44:23

阅读数 168

评论数 0

bzoj1494 生成树计数(状压dp+生成树+矩阵倍增)

看数据,k<=5,n<=1e15,n极大,显然只能矩阵倍增去算。考虑dp,k极小,每个点最多能和前k个点连边,因此我们需要知道前k个点的联通情况,采用状压dp,用最小表示法。 我们可以先用一个DFS预处理出所有可能出现的连通性的状态。然后再枚举连通性状态S以及下一个点和S里的K个点中...

2017-10-12 22:37:48

阅读数 251

评论数 0

NOIP模拟9.27

2013提高D1 A.转圈游戏(快速幂)AC B.火柴人排队(树状数组求逆序对)AC C.货车运输(贪心+并查集+树上倍增)AC

2017-09-27 11:31:51

阅读数 187

评论数 0

bzoj4887 [Tjoi2017]可乐(dp+矩阵倍增)

f[0][i][t]表示第t秒到i的全部方案(含之前已经在i炸掉的)f[1][i][t]表示第t秒到i而且还在i没炸的方案数,则 f[0][i][t]=f[0][i][t-1]+f[1][j][t-1]+f[1][j][t-1]|i,j之间有边 f[1][i][t]=f[1][j][t-1]+...

2017-08-17 14:31:08

阅读数 519

评论数 0

bzoj2875 [noi2012]随机数生成器(矩阵倍增)

挺裸的矩阵倍增。。。就是再处理一下ll*ll.思想类似快速幂,例如对x*y,把x变成二进制,y去倍增,每次都mod m,变乘法为许多次加法,保证不会溢出。

2017-08-10 23:31:37

阅读数 253

评论数 0

hdu2604 queuing(dp+矩阵倍增)

f[i]表示i个人排队时为E-queue的方案数。则有:f[n]=f[n-1]+f[n-3]+f[n-4] 解释一下:第n个人为m时,前n-1个只要合法就行,所以是f[n-1]. 第n个人为f时,前n-1个人合法不能保证这n个都合法,我们再看第n-1位,第n-1位为m时,第n-2为显然只能是m...

2017-08-10 23:30:57

阅读数 294

评论数 0

bzoj4870 [Shoi2017]组合数问题(dp+矩阵倍增)

翻译一下题目:实际上就是要我们从nk件物品里面选出若干件,使得其数量模k等于r的方案数。f[i][j]表示前i件物品拿了若干件使得其数量模k等于j的方案数。显然有dp方程:f[i][j]=f[i-1][j]+f[i-1][j-1]。初始值:f[0][0]=1.用矩阵快速幂加速一下就好啦。时间复杂度...

2017-08-10 23:30:24

阅读数 273

评论数 0

提示
确定要删除当前文章?
取消 删除
关闭
关闭