- 博客(90)
- 资源 (1)
- 收藏
- 关注
原创 错排公式
错排问题对于n个人有n个座位,现在求每个人都不再自己座位上的方案数n个人相互送礼也是该类问题相关公式我们容易得到:D[0]=0,D[1]=0,D[2]=1D[0]=0,D[1]=0,D[2]=1D[0]=0,D[1]=0,D[2]=1现在有nnn个位置,我们考虑1号位置,如果该位置的原本的主人现在在kkk号位置,那么我们考虑kkk号位置,他可以在1号位置,这时有两个人不再自己的位置上,即...
2019-10-21 21:18:05 168
原创 codeforces 1221D dp
题意给你n个木板的长度,和提高1单位长度所耗费的权值,先需要相邻的两个板子之间不能为相同高度,求最小花费分析如果相邻的三个木板长度为1,2,3我们发现第二个木板增长两次就可以了如果相邻的三个木板长度为1,1,4我们发现第二个木板增长一次就可以了如果相邻的三个木板长度为1,2,4我们发现第二个木板不需要增长故,我们发现对于一个木板,最多增长两次所以我们可以dp求解设dp[i][j]d...
2019-10-20 21:12:02 141
原创 codeforces 1236B 组合数学
题意n种小球放入m个不同的盒子中,要求在所有盒子中,包含n种小球分析我们知道m个盒子自由的组合,有2m2^{m}2m种对于每种小球,我们要保证他存在,所以有2m−12^{m}-12m−1种现在有n种小球,所以答案为:(2m−1)n(2^{m}-1)^{n}(2m−1)n#include <bits/stdc++.h>using namespace std;typedef...
2019-10-18 20:13:31 180
原创 hdu4675 GCD of Sequence 组合数学+反演
分析我们设f(d)f(d)f(d)为gcd=d\gcd=dgcd=d的数量,F(d)F(d)F(d)为gcd\gcdgcd为ddd或者ddd的倍数的数量我们有反演(假设n=3):f(d)=∑d∣tμ(td)F(t)f(d)=\sum_{d \mid t}\mu(\frac{t}{d})F(t)f(d)=∑d∣tμ(dt)F(t)所以这道题难在F(t)F(t)F(t)怎么求:我们设n...
2019-10-17 13:01:02 142
原创 hdu 4746 Mophues 质因子数量小于p
推式子设:num[x]num[x]num[x]表示xxx唯一分解后所有质因子指数之和ans=∑i=1n∑j=1m[num[gcd(i,j)]<=p]\begin{aligned}ans=\sum_{i=1}^{n}\sum_{j=1}^{m}[num[\gcd(i,j)]<=p]\end{aligned}ans=i=1∑nj=1∑m[num[gcd(i,j)]<...
2019-10-15 21:58:37 93
原创 codeforces 1217D 染色问题
题意现给n个点,m条有向边。给这个图涂色,要求一个环内存在两种颜色,如果无环,就一种颜色即可分析我们知道如果整个图无环,颜色数为1,若存在环,颜色数为2故最大颜色数为2剩下的就是涂色问题。我们可以dfs遍历,对于一条dfs链我们标记它,当跑到祖宗节点时,我们可以知道出现环,那么给这个边涂色为2,环上其他边涂色为1,回溯过程取消标记,因为一个点可以被多个环覆盖。#include <...
2019-10-15 20:12:48 225
原创 codeforces 1217C 二进制思维
题意t组输入,对于每组,我们有个二进制串,求这个串的子串所表示的二进制值等于子串长度的子串个数分析我们知道,对于一个字符串,长度为nnn,他的子串个数为:n(n+1)2\frac{n(n+1)}{2}2n(n+1)但这题我们枚举所有子串那肯定tle我们发现串最长为:2∗105<2182*10^{5}<2^{18}2∗105<218于是18位二进制就可以表示所有的数据...
2019-10-14 21:57:59 327 1
原创 codeforces 156D Clues Prufer序列+凯莱定理
题意现有n个点,m条边,模数为k,现在要让每个联通块相连组成生成树,并且两两联通块之间只用一条边相连。分析由Prufer序列我们可以知道,一个[1,n−2][1,n-2][1,n−2]排列,对应一个n个点的无根树所以,n个点组成的无根树有:nn−2n^{n-2}nn−2个然后分析本题。现有n个点,m条边,假设其联通块数量为dd,我们将联通块当成一个整体,生成树方案有:ndd−2n^{dd...
2019-10-10 21:01:22 980
原创 卡特兰数--相关公式
H[i]=H[i−1]∗(4∗i−2)(i+1)H[i]=\frac{H[i-1]*(4*i-2)}{(i+1)}H[i]=(i+1)H[i−1]∗(4∗i−2)
2019-10-09 22:00:39 456
原创 洛谷P3327-约数个数和-莫比乌斯反演+约数个数函数前缀和
推式子ans=∑i=1N∑j=1Md(ij)\begin{aligned}ans=\sum_{i=1}^{N}\sum_{j=1}^{M}d(ij)\end{aligned}ans=i=1∑Nj=1∑Md(ij)现在有个式子:d(ij)=∑x∣i∑y∣j[gcd(x,y)==1]\begin{aligned}d(ij)=\sum_{x \mid i}\sum_{y \...
2019-10-09 21:15:09 277
原创 约数个数&&约数和 线性筛--板子
约数个数const int N = 1e6 + 5;int sum[N], d[N], prime[N], tot;bool mark[N];void get_d(){ mark[0] = mark[1] = true; tot = 0; sum[1] = d[1] = 1; for(int i = 2; i < N; i ++) { ...
2019-10-09 20:09:16 176
原创 洛谷-P3172 选数 杜教筛+莫比乌斯反演
题意从[L,H][L,H][L,H]选n个数,且这个n个数的gcd\gcdgcd为k的方案数推式子假设n=3ans=∑x=LH∑y=LH∑z=LH[gcd(x,y,z)==k]\begin{aligned}ans=\sum_{x=L}^{H}\sum_{y=L}^{H}\sum_{z=L}^{H}[\gcd(x,y,z)==k]\end{aligned}ans=x=L∑Hy...
2019-10-08 20:57:31 100
原创 gym-101982C 2018-2019 ACM-ICPC Pacific Northwest n个数中任意k个数之积
分析首先给了我们n个题目,每个题目都有一个等级,现在要求从k个等级中分别选出一道题,问方案数我们可以想到,去统计每个等级中题目的个数,然后方案数为从所有等级中任选k个等级,并从每个选中的等级中选一道题。假设最终有n个等级,则最终答案为n个数中任意k个数的乘积如果k=1k=1k=1,我们会发现方案数是所有等级中题目数量之和如果k=3k=3k=3,我们有:∑i=1n∑j=i+1n∑k=j+...
2019-10-06 22:26:02 200
原创 gym-101982B 2018-2019 ACM-ICPC Pacific Northwest 反演
推式子ans=∑i=ab∑j=cd[gcd(i,j)==1]\begin{aligned}ans=\sum_{i=a}^{b}\sum_{j=c}^{d}[\gcd(i,j)==1]\end{aligned}ans=i=a∑bj=c∑d[gcd(i,j)==1]我们给(a,b)(a,b)(a,b)拆成(1,b)−(1,a−1)(1,b)-(1,a-1)(1,b)−(1,a−1...
2019-10-06 22:03:11 120
原创 中国剩余定理——学习
模数互质有同余方程组:{x≡d1(modp1)x≡d2(modp2)x≡d3(modp3)\left\{\begin{aligned}x \equiv d_1 \pmod {p_1}\\x \equiv d_2 \pmod {p_2}\\x \equiv d_3 \pmod {p_3}\end{aligned}\right.⎩⎪⎨⎪⎧x≡d1(modp1)x≡d2(mo...
2019-09-30 20:12:38 111
原创 洛谷--P3768 简单的数学题--杜教筛
先贴个代码#include <bits/stdc++.h>using namespace std;typedef long long ll;typedef unsigned long long ull;template <typename T>void out(T x) { cout << x << endl; }const int N...
2019-09-28 21:55:49 98
原创 洛谷--P4213--杜教筛模板(欧拉函数,莫比乌斯函数)
题目求:ans1=∑i=1nϕ(i)ans2=∑i=2nμ(i)\begin{aligned}ans1=\sum_{i=1}^{n}\phi(i)\\ans2=\sum_{i=2}^{n}\mu(i)\end{aligned}ans1=i=1∑nϕ(i)ans2=i=2∑nμ(i)由于n<=231−1n <= 2^{31}-1n<=231−1,所以正常的O(n...
2019-09-28 19:52:13 177
原创 洛谷--P5221 Product
本题可反演,也可用欧拉函数过题欧拉函数ans=∏i=1N∏j=1Nlcm(i,j)gcd(i,j)\begin{aligned}ans =\prod_{i=1}^{N}\prod_{j=1}^{N}\frac{lcm(i,j)}{\gcd(i,j)}\end{aligned}ans=i=1∏Nj=1∏Ngcd(i,j)lcm(i,j)首先我们将lcm(i,j)lcm(i,...
2019-09-27 22:41:30 113
原创 莫比乌斯学习小结
前置知识数论分块,莫比乌斯函数,和式的相关推导(积累)数论分块这个我写过一篇博客,下面是链接https://blog.csdn.net/qq_43101466/article/details/100999784莫比乌斯函数μ(n)={1n为1(−1)kk为n的质因子个数0n存在非平方因子{\displaystyle \mu (n)={\begin{cases}1 \quad n为...
2019-09-27 19:42:41 151
原创 洛谷--P2158 仪杖队--欧拉函数
这题可以用莫比乌斯反演来写,相关式子:ans=∑i=1n−1∑j=1n−1[gcd(i,j)==1]+2(n>=2)ans=\sum_{i=1}^{n-1}\sum_{j=1}^{n-1}[\gcd(i,j)==1]+2\quad(n >=2)ans=∑i=1n−1∑j=1n−1[gcd(i,j)==1]+2(n>=2)当n=1,ans=0当n=1,ans=0当n=1,...
2019-09-27 18:15:22 127
原创 裴蜀定理
两个未知量先有两未知量a,b,根据裴蜀定理我们有:存在x,y满足ax+by=gcd(a,b)ax+by=gcd(a,b)ax+by=gcd(a,b)相关证明略,类似辗转相除然后这个方程可以用扩展欧几里得去求解这个式子我们变换一下:gcd(a,b)=by+(a%b+b∗⌊ab⌋)x\gcd(a,b)=by+(a\%b+b*\lfloor\frac{a}{b}\rfloor)xgcd(a...
2019-09-26 18:34:44 305
原创 乘法逆元
组合数递推求阶乘的逆元适用N<=1e6 inv[0] = fac[0] = 1; for(int i = 1; i < N; i ++)//如果N大于mod,那只要跑到mod-1就行,因为后面的%mod==0 fac[i] = fac[i - 1] * i % mod; inv[N - 1] = fast_pow(fac[N - 1], mod...
2019-09-26 11:23:16 98
原创 卢卡斯定理---板子
先贴个代码,这个是p是素数的情况#include<bits/stdc++.h>using namespace std;typedef long long ll;typedef unsigned long long ull;const int N = 2e5 + 5;ll fast_pow(ll a, ll b, ll p) { ll c = 1; while(b) {if(...
2019-09-25 23:39:13 221
原创 洛谷-P1829 Crash的数字表格--积性函数
推式子ans=∑i=1N∑j=1Mlcm(i,j)=∑i=1N∑j=1Mi∗jgcd(i,j)\begin{aligned}ans = \sum_{i=1}^{N}\sum_{j=1}^{M}lcm(i,j) =\sum_{i=1}^{N}\sum_{j=1}^{M}\frac{i*j}{\gcd(i,j)}\end{aligned}ans=i=1∑Nj=1∑Mlcm(i,j)...
2019-09-25 21:00:44 199 1
原创 hdu 1695 GCD
开始推式子ans=∑x=ab∑y=cd[gcd(x,y)=k]\begin{aligned}ans = \sum_{x=a}^{b}\sum_{y=c}^{d}[\gcd(x,y)=k]\end{aligned}ans=x=a∑by=c∑d[gcd(x,y)=k]还是老套路,我们令f(k)=∑x=ab∑y=cd[gcd(x,y)=k]f(k)=\sum_{x=a}^{b}...
2019-09-24 21:58:27 89
原创 hdu 6428 Calculate(狄利克雷卷积 + 莫比乌斯反演)
开始推式子ans=∑i=1A∑j=1B∑k=1Cϕ(gcd(i,j2,k3))\begin{aligned}ans = \sum_{i = 1}^{A}\sum_{j = 1}^{B}\sum_{k = 1}^{C}\phi(\gcd(i, j^{2}, k^{3}))\end{aligned} ans=i=1∑Aj=1∑Bk=1∑Cϕ(gcd(i,j2,k3))我们令gc...
2019-09-24 18:22:51 144
原创 洛谷-P4450双亲数
题意求 ans=∑i=1A∑j=1B[gcd(i,j)==d]ans = \sum_{i = 1}^{A}\sum_{j = 1}^{B}[\gcd(i, j) == d]ans=∑i=1A∑j=1B[gcd(i,j)==d]分析我们发现酷似洛谷P2257,题题解链接:https://blog.csdn.net/qq_43101466/article/details/101...
2019-09-22 21:36:20 157
原创 洛谷-P2257 YY的GCD
洛谷-P2257分析本题需要前置知识:数论分块,莫比乌斯反演数论分块,可看https://blog.csdn.net/qq_43101466/article/details/100999784先介绍一下莫比乌斯函数μ(n)={1n为1(−1)kk为n的质因子个数0n存在非平方因子{\displaystyle \mu (n)={\begin{cases}1 \quad n为1\\(...
2019-09-20 18:45:24 149
原创 2019 icpc 沈阳网络赛 B Dudu's maze 并查集
题意我们已知n个点,m条边,k个标记。可能存在重边,无自环(就是不存在 a->a,但存在环)除了k个被标记的点,其他点都有一个糖果,并且这些点是可以任意的选择道路。被标记的点只能随机的被安排道路(只能被安排一次,下次遇到就结束)。先要求从1号屋开始,最多能拿多少糖果分析首先我们看到了随机,可想而知是个期望题。由于我们只有一次跳转的机会,这样会发现只有与1号屋相连的(直接或间接)怪兽屋...
2019-09-15 19:17:25 138
原创 2019icpc上海网络赛-B Light bulbs 一维差分+离散化
一维差分对于区间[l, r],我们有num[l] ++;num[r + 1] --;//差分for(int i = 1; i <= n; i ++) num[i] += num[i - 1];//做前缀和题意有n个灯,m次操作,每次操作有两个参数l,r,其意义是对区间[l, r]内的灯进行一次状态转换(原来是关的,转换后就是开的,初始都是关的),现在问经过m次操作,有多少灯是开...
2019-09-15 18:57:10 153
原创 hdu 6599 I Love Palindrome String hash+PAM
题意给一个字符串,让我们找每个长度的子串中,是super串的个数。(类似双倍回文)分析我们对原串建立一个PAM,这样我们可以统计每种回文串出现次数,在用hash判断是不是super串最后在统计一下就ok#include <bits/stdc++.h>using namespace std;typedef long long ll;typedef unsigned lon...
2019-09-13 14:44:17 120
原创 PAM-回文自动机-模板
贴个板子#include <bits/stdc++.h>using namespace std;typedef long long ll;typedef unsigned long long ull;const int N = 5e5 + 5;struct PAM_node//回文树上节点{ int vis[26]; int fail, len, num;...
2019-09-11 20:59:49 180
原创 manacher ——学习
回文串形如aaa,aa,aba之类的就是回文串,字符串关于某个位置中心对称。反之,abcd不为回文串对于字符串str,现有个O(n)范围求出以每个位置为中心的最长回文半径——manachermanacher正常的求每个位置的最长回文半径,我们用暴力,复杂度是O(n2n^{2}n2),但是我们发现,在前面求出的半径可以拿来使用求后面的半径,从而减少一定时间。先贴个代码,图后补#inclu...
2019-09-10 20:42:37 84
原创 队列优化dijstra---板子
留个板子2019 南昌网络赛B#include <bits/stdc++.h>using namespace std;typedef long long ll;typedef unsigned long long ull;const int V = 1000 + 100;const int E = V * V / 2;struct node { int nex...
2019-09-09 19:18:23 94
原创 2019 ccpc 网络赛——hdu-6704-K-th occurrence--后缀数组+主席树
先贴个代码/*后缀数组+主席树*/#include <bits/stdc++.h>using namespace std;typedef long long ll;typedef unsigned long long ull;const int N = 1e5 + 100;struct node//静态主席树节点 { int l, r, val;}T[N * ...
2019-09-06 21:57:58 196
原创 对二维前缀和的离线处理——2019南京网络赛A
先贴个代码#include <bits/stdc++.h>using namespace std;typedef long long ll;typedef unsigned long long ull;const int N = 1e6 + 5;struct point{ ll x, y, w; point(ll _x = 0,ll _y = 0, ll ...
2019-09-04 21:11:39 110
原创 后缀数组-学习
## 后缀数组(suffix array)求的是每个后缀的排名,我们可以使用倍增法跟DC3,前者时间复杂度O(nlogn),后者O(n)本文只考虑倍增法然后我们定义了一些数组sa[i]: 排名为i的后缀的位置tp[i]: 第二关键字,性质同sa[i]rak[i]: 第i个后缀的排名tax[i]: 排序是需要用到的桶(基数排序)排序部分void Qsort(){ for(...
2019-08-28 21:47:26 94
原创 lowbit理解
我们在树状数组中可以遇到lowbit这个函数,他的用处是找最低位1的,一般写成(x & -x)形式。原理我们知道在计算机中二进制是以补码存储的。对于x(x>0),我们知道他的补码就是他的本身,但-x怎么求呢对于整数x,[x]补=2n+1−∣x∣[x]_补=2^{n+1} - |x|[x]补=2n+1−∣x∣,n为x的二进制最高位设x=26,[x]补=011010(B)x=...
2019-08-20 11:37:09 520
原创 二次剩余-学习
二次剩余形如: x2≡d(modp){x^2} \equiv d \pmod px2≡d(modp) ,d为模p意义下的二次剩余本文讨论的是p为质数的二次剩余在数学中有个勒让德符号,判断是否是二次剩余(np)={1 (n是模p意义下的二次剩余)−1 (n是模p意义下的非二次剩余)0 (n≡0(modp)) (\dfrac{n}{p})=\left\{...
2019-08-19 11:15:09 220
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人