mod函数

染色:多项式,分治,二项式反演,(生成函数?)

亡梦爱人 提交于 2019-12-09 07:12:36
Description 为了报答小 C 的苹果, 小 G 打算送给热爱美术的小 C 一块画布, 这块画布可以抽象为一个长度为n 的序列, 每个位置都可以被染成m 种颜色中的某一种. 然而小 C 只关心序列的n 个位置中出现次数恰好为s 的颜色种数, 如果恰好出现了s 次的颜色有k 种, 则小C会产$W_k$ 的愉悦度. 小 C 希望知道对于所有可能的染色方案, 他能获得的愉悦度的和对1004535809 取模的结果是多少. $n \le 10^7$ $m \le 10^5$ $s \le 150$ 总感觉这个s的范围可以搞一些事情,然而并不可以。 题目的含义中有两个「恰好」,想办法干掉。 其中「恰好s次」这个好解决,根据含义来就好了。 另一个「恰好k种」转化为「至少k种」然后容斥解决。 首先设$f_i$表示恰好出现s次的颜色至少有k种时的方案数,根据含义列式: $f_i=C_{m}^{i} \times C_{n}^{i \times s} \times \frac{(i \times s)!}{(s!)^i} \times (m-i)^{n-i \times s} $ 就是先选出$i \times s$个位置,再选出这$i$种颜色,然后把这些颜色排布在这些位置里,最后再在其它位置随意填充其他颜色。 这个肯定是有重复的,因为你在其他位置随意填充时可能出现了其它的恰好出现了s次的颜色

PKUWC&SC 2018 刷题记录

安稳与你 提交于 2019-12-06 16:15:18
PKUWC&SC 2018 刷题记录 minimax 线段树合并的题,似乎并不依赖于二叉树。 之前写的草率的题解在这里: PKUWC2018 minimax Slay the Spire 注意到强化牌的强化倍数都是大于 \(1\) 的正整数,所以可以发现能强化就尽量强化。 用 \(F(x,y)\) 表示强化牌抽 \(x\) 张打出 \(y\) 张的倍率之和 用 \(G(x,y)\) 表示攻击牌抽 \(x\) 张打出 \(y\) 张的攻击之和 那么我们枚举抽了多少张攻击牌,在利用以上两个函数就可以算出答案了。 至于怎么计算那两个函数就看代码把。 #include<bits/stdc++.h> #define rep(i,l,r) for(int i=l;i<=r;i++) using namespace std; const int sz=3e3+7; const int mod=998244353; int T; int ans; int n,m,k; int a[sz],b[sz]; int inv[sz],fac[sz],ifac[sz]; int sum[sz],f[sz][sz],g[sz][sz]; void init(){ fac[0]=ifac[0]=1; fac[1]=ifac[1]=inv[1]=1; for(int i=2;i<sz;i++){ inv[i]

P3768 简单的数学题

怎甘沉沦 提交于 2019-12-06 00:33:12
题意 首先一波莫比乌斯反演可得(懒得写latex了): 设 \(sum(x)=\sum\limits_{i=1}^xi\) \(ans=\sum\limits_{T=1}^{n}sum(\frac{n}{T})^2T^2\sum\limits_{d|n}d\mu(\frac{T}{d})\) 有 \(id*\mu=\varphi\) 证明: 由 \(id=\varphi*1,1*\mu=\epsilon\) 可得: \(id*\mu=\varphi*1*\mu->id*\mu=\varphi\) 知道这个后: \(\sum\limits_{T=1}^{n}sum(\frac{n}{T})^2T^2\varphi(T)\) 显然前面可以除法分块,考虑怎么求 \(T^2\varphi(T)\) 设 \(f(i)=i^2*\varphi(i)\) ,发现这是个积性函数,考虑杜教筛: 设 \(S(n)=\sum\limits_{i=1}^{n}f(i)\) 先上杜教筛套路式子: \(g(1)*S(n)=\sum\limits_{i=1}^n(g*f)(i)-\sum\limits_{i=2}^ng(i)*f(\frac{n}{i})\) 考虑找合适的 \(g\) : \((f*g)(n)=\sum\limits_{d|n}g(d)*f(\frac{n}{d})\) \(=\sum

P3312 [SDOI2014]数表

孤街浪徒 提交于 2019-12-05 23:36:31
题意 默认 \(n\leqslant m\) 。 设 \(f(i)\) 表示 \(i\) 的约数和,因为是积性函数,可以用线性筛求。 先不考虑 \(a\) 的限制,我们推下式子: \(\sum\limits_{i=1}^{n}\sum\limits_{j=1}^{m}f(\gcd(i,j))\) 枚举 \(\gcd(i,j)\) \(\sum\limits_{d=1}^{n}f(d)\sum\limits_{i=1}^{n}\sum\limits_{j=1}^{m}[\gcd(i,j)=d]\) 之后就莫反: \(\sum\limits_{d=1}^{n}f(d)\sum\limits_{i=1}^{\frac{n}{d}}\sum\limits_{j=1}^{\frac{m}{d}}[\gcd(i,j)=1]\) \(\sum\limits_{d=1}^{n}f(d)\sum\limits_{i=1}^{\frac{n}{d}}\sum\limits_{j=1}^{\frac{m}{d}}\sum\limits_{x|\gcd(i,j)}\mu(x)\) \(\sum\limits_{d=1}^{n}f(d)\sum\limits_{x=1}^{\frac{n}{d}}\mu(x)\sum\limits_{i=1}^{\frac{n}{d}}\sum\limits_{j=1}^{

【学习笔记】原根与指标

女生的网名这么多〃 提交于 2019-12-05 04:39:00
1. 阶 1.1 定义 设正整数 \(n>1\) , \(a\) 是满足 \(a\perp n\) ( \(a\) 与 \(n\) 互质)的整数,则必有一个正整数 \(r\in [1,n]\) ,使得 \(a^r\equiv 1\pmod n\) 。 满足条件的最小的正整数 \(r\) ,称为 \(a\) 模 \(n\) 的 阶 ,记作 \(Ord_n(a)\) 。 注意,若 \((a,n)\neq 1\) ,则不存在 \(a\) 模 \(n\) 的阶。 1.2 阶的性质 设 \(a\perp n\) , \(a^N\equiv 1\pmod n \Leftrightarrow Ord_n(a)|N\) 。 设 \(a\perp n\) , \(Ord_n(a)|\varphi(n)\) 。 2. 原根 2.1 定义 设正整数 \(n>1\) , \(a\) 是满足 \(a\perp n\) 的整数,若 \(Ord_n(a)=\varphi(n)\) ,则称 \(a\) 为模 \(n\) 的一个 原根 。 2.2 解性 设正整数 \(n>1\) , \(n\) 的原根是 一些 关于 \(n\) 的剩余类(原根可以不止一个)。 所以研究原根时,我们只需要研究 \([1,n)\) 范围内的解即可。 2.3 原根的性质 只有 \(2,4,p^k,2p^k(p是奇素数)\) 有原根。

模板

雨燕双飞 提交于 2019-12-04 04:40:26
矩阵 矩乘(现在正确, 20191021) const LL MOD = 1e9 + 7; struct Matrix { int row, col; LL val[33][33]; void init0() { memset(val, 0, sizeof val); } void init1() { memset(val, 0, sizeof val); for (int i = 0; i < row; ++ i) val[i][i] = 1; } Matrix () {} Matrix (int _row, int _col) { row = _row; col = _col; memset(val, 0, sizeof val); } Matrix operator * (const Matrix B) const { Matrix C (row, B.col); for (int i = 0; i < row; ++ i) for (int j = 0; j < B.col; ++ j) for (int k = 0; k < col; ++ k) (C.val[i][j] += val[i][k] * B.val[k][j] % MOD) %= MOD/*, printf("%d%d += %lld * %lld\n", i, j, val[i][k], val[k][j

[CSP-S模拟测试97]题解

喜夏-厌秋 提交于 2019-12-03 10:23:59
A.小盆友的游戏 感觉题解解释的很牵强啊……还是打表找规律比较靠谱 对于每个人,它构造了一个期望函数$f(x)$,设它的跟班个数为$cnt[x]$,那么令$f(x)=2^{cnt[x]}-1$ (??鬼知道为什么要等于这个) 然后再定义当前局面的期望函数为每个人期望函数之和。 然后你会发现每次猜拳后局面期望函数变化量都是1 那么期望步数其实就是终止局面期望函数值-初始局面期望函数值 $ans=2^(n-1)-1-\sum (2^{cnt[x]}-1)$ #include<bits/stdc++.h> using namespace std; typedef long long ll; const ll mod=1e9+7; ll qpow(ll a,ll b) { ll res=1; while(b) { if(b&1)res=res*a%mod; a=a*a%mod; b>>=1; } return res; } int n,a[100005],cnt[100005]; int main() { freopen("game.in","r",stdin); freopen("game.out","w",stdout); scanf("%d",&n); for(int i=1;i<=n;i++) { scanf("%d",&a[i]); cnt[a[i]]++; } ll ans

LOJ#6389. 「THUPC2018」好图计数 / Count【生成函数】

匿名 (未验证) 提交于 2019-12-03 00:19:01
传送门 终于卡过去了…… 这题和求无标号有根树个数的思路差不多,可以先看 这里 ,因为下面一些公式演算会省略中间过程。 设大小为 n n 的好图数目为 f n f n ,其中连通的数目为 g n g n 注意但 n ≥ 2 n ≥ 2 时,不连通的好图和连通的好图一一对应,即 g n = f n / 2 g n = f n / 2 考虑生成函数 F ( x ) = ∑ f i x i F ( x ) = ∑ f i x i ,为何方便,我们设 f 0 = 1 f 0 = 1 。 一个好图是由若干个连通好图拼成,即 F ( x ) = ∏ k > 0 ( ∑ i ≥ 0 x i k ) g k = ∏ k > 0 ( 1 x k ) g k F ( x ) = ∏ k > 0 ( ∑ i ≥ 0 x i k ) g k = ∏ k > 0 ( 1 x k ) g k 两边取 I n I n 再求导得 F ′ ( x ) F ( x ) = ∑ k > 0 k g k x k 1 1 x k F ′ ( x ) F ( x ) = ∑ k > 0 k g k x k 1 1 x k F ′ ( x ) = F ( x ) ∑ k > 0 k g k x k 1 1 x k F ′ ( x ) = F ( x ) ∑ k > 0 k g k x k 1 1 x k 再拆回每一项看: [

2019徐州网络赛 H.function

匿名 (未验证) 提交于 2019-12-03 00:03:02
题意: 先有 \(n=p_1^{k_1}p_2^{k_2}\cdots p_m^{k_m}\) ,定义 \(f(n)=k_1+k_2+\cdots+k_m\) 。 现在计算 \[ \sum_{i=1}^nf(i!)\% 998244353 \] 思路: 首先注意到 \(f\) 函数有这样一个性质: \(f(ab)=f(a)+f(b)\) 。 那么我们化简所求式子有: \[ \begin{aligned} &\sum_{i=1}^nf(i!)\\ =&\sum_{i=1}^n\sum_{j=1}^if(j)\\ =&\sum_{i=1}^n (n-i+1)f(i)\\ =&(n+1)\sum_{i=1}^nf(i)-\sum_{i=1}^n if(i)\\ \end{aligned} \] 注意 \(f\) 并不是积性函数,但是我们根据上面的性质,发现 \(\sum_{i=1}^nf(i)\) 其实求的就是 \(1,2,\cdots,n\) 中,每个数的质因子指数和。就和对 \(n!\) 做质因子分解一样,我们只需要依次考虑每个素数的贡献,那么就可以化为: \((n+1)\sum_{i=1}^n[i\in P]\sum_{k=1}^{34}\lfloor\frac{n}{i^k}\rfloor\) 那后半部分呢? 还是像上面一样,每个质数依次考虑。假设对于质数 \(p\) 而言

2019南京网络赛E:K Sum

匿名 (未验证) 提交于 2019-12-03 00:03:02
Description: 定义函数 \[ f _n (k) = \sum _{l _1 = 1} ^n \sum _{l _2 = 1} ^n \cdots \sum _{l _k = 1} ^n \gcd(l _1, l _2, \cdots, l _k) ^2 \] 现给定 \(n, k\) ,需要求出 \(\sum _{i = 2} ^k f _n (i)\) ,答案对 \(10 ^9 + 7\) 取模。 \(T\) 组数据。 \[ 1 \le T \le 10, 1 \le n \le 10 ^9, 2 \le k \le 10 ^{10 ^5} \] Solution: \[ \begin{aligned} f_n(k) &= \sum_{d=1}^nd^2\sum_{x=1}^\frac{n}{d}\mu(x)\lfloor\frac{n}{dx}\rfloor ^k\\ &=\sum_{T=1}^n\lfloor\frac{n}{T}\rfloor^k\sum_{d|T}\mu(d)\left(\frac{T}{d}\right)^2 \end{aligned} \] 答案为: \[ \begin{aligned} &\sum_{i=2}^k\sum_{T=1}^n\lfloor\frac{n}{T}\rfloor^i\sum_{d|T}\mu(d)\left(