自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(547)
  • 收藏
  • 关注

原创 冲刺必备算法总结

算法大纲组合数学11

2021-06-28 20:16:00 202

原创 高二复习计划汇总

九月LCT(3天)(已完成) 字符串(SAM,ACAM,KMP,扩展KMP,PAM)(6天)(已完成) 图论(3天) 数据结构(3天) 网络流(3天) 多项式板子(1天)(重写多几遍,做到1小时调AC) 生成函数(7天) 数论(2天) 组合数学(2天)

2021-01-08 20:30:31 452 1

原创 斯特林数行列求解

斯特林数行列快速求解方法总结

2022-09-21 09:35:37 321

原创 苏州国决前集训Day11 模拟测试T2

zzqzzqzzq 喜欢构造题,于是又出了一道构造题。你需要构造一个 n×nn\times nn×n的矩阵,每个格子里你需要填一个 1∼n21∼n^21∼n2 的整数。你需要保证第 iii 行恰好有 aia_iai​ 个不同的数,第 iii 列恰好有 bib_ibi​ 个不同的数,其中 ai,bi∈[2,n]a_i,b_i\in[2,n]ai​,bi​∈[2,n]如果有解,给出任意一个解。如果无解,输出 −1−1−1。盲猜有解真实的构造题,做法就是先给主对角线填上 111 ,再给任意一条副对角线填上

2021-07-21 15:18:54 400

原创 苏州国决前集训Day10 模拟测试T2

今天 zzq\text{zzq}zzq 在瞎写代码,首先他写了一个如下的树状数组(假设 int\text{int}int 可以存储任意大的整数):int n,bit[N]; //N足够大void init() { for(int i=1;i<=n;++i) bit[i]=0;}void add(int x,int v) { for(int i=x;i<=n;i+=i&-i) bit[i]+=v;}利用这个树状数组,他定义了一种对长度为 nnn 的数组 aaa

2021-07-20 16:19:49 231

原创 苏州国决前集训Day9 模拟测试T2

有一个长度为 nnn 的整数序列,每个元素在 [1,m][1,m][1,m] 中独立均匀随机,求序列的最长连续等子段长度期望长度乘 mnm^nmn,对输入的质数 ppp 取模。例如,{1,2,2,2,3,3,3,3,2,2,1}\{1,2,2,2,3,3,3,3,2,2,1\}{1,2,2,2,3,3,3,3,2,2,1} 的最长连续等子段长度为 444。思路和题解基本一样。考虑计算 max⁡≤k\max \leq kmax≤k 的方案数。设 f[i]f[i]f[i] 表示前 iii 个的方案数,显

2021-07-19 16:03:18 174

原创 苏州国决前集训Day9 模拟测试T1

有一张无重边无自环的联通无向图。你需要进行下列两件事之一:将图 333 染色或 444 染色,即给每个点一个 111 到 333 或 444 中的颜色,并满足有边相连的点颜色不同。如果你选择了进行 444 染色,你会被扣除测试点 40%40\%40% 的分数。给出一个图中的奇环,即一个不重复的顶点序列 v1,v2⋯vkv_1,v_2⋯v_kv1​,v2​⋯vk​,kkk 为奇数,且 viv_ivi​ 和 vi+1v_{i+1}vi+1​ (vkv_kvk​ 和 v1v_1v1​)有边,并满足删除这个奇

2021-07-19 15:57:36 176

原创 苏州国决前集训Day8 模拟测试T1

在一个 nnn 个点 mmm 条边的图上,点的标号是 1,2,⋯,n1,2,⋯,n1,2,⋯,n,第 iii 条边连接的是 aia_iai​ 和 bib_ibi​ 。一个点的子集被称为好的,当且仅当子集中的任意两点都能仅通过子集中的点联通。我们现在想要知道有多少个好的子集,对 222 取模。1≤n≤50,0≤m≤n(n−1)2,1≤ai,bI≤n,0<∣ai−bi∣≤131\leq n\leq 50,0\leq m\leq \frac{n(n-1)}{2},1\leq a_i,b_I\leq n

2021-07-19 08:00:13 165

原创 苏州国决前集训Day5 模拟测试T2

现在有一条 nnn 个点的链,从左到右一字排开,编号为 1,2,…,n1,2,…,n1,2,…,n. 在每条边上,你可以在向左与向右的方向上各打上若干个(可以为 000 个)箭头。在一个点上,若有 d+d^+d+ 个箭头从该点发出、d−d^−d− 个箭头指向该点,则它的得分为 d−+2d+d^−+2d^+d−+2d+.现在要求第 iii 个点的得分不小于 aia_iai​, 求最少需要的箭头数。相当于对于每一个 i(1≤i<n)i(1\leq i<n)i(1≤i<n) ,相当于要么

2021-07-15 15:19:58 154

原创 苏州国决前集训Day4 模拟测试T1

将前 nnn 个正整数不重不漏地划分进 mmm 个非空集合 A1,A2,…,AmA1,A2,…,AmA1,A2,…,Am.一个划分是守序的,当且仅当存在 (1,2,…,m)(1,2,…,m)(1,2,…,m) 的环排列 (p1,p2,…,pm)(p_1,p_2,…,p_m)(p1​,p2​,…,pm​) 使得 max⁡{Api}>min⁡{Api−1}\max\{A_{p_i}\}>\min\{A_{p_{i−1}}\}max{Api​​}>min{Api−1​​}. 其中 p0=pmp

2021-07-14 16:31:06 228

原创 苏州国决前集训Day3 模拟测试T2

有一个 010101 矩阵,但有一天上面有些位置看不见了,变成了 ???,这些位置可以随意改成 000 或 111.一个矩阵的价值定义为:这个矩阵上每有一个 x×xx\times xx×x的全 000 正方形,这个正方形权值就增加 AxA_xAx​, 每有一个 x×xx\times xx×x 的全 111 正方形,这个正方形权值就增加 BxB_xBx​现在我们想知道怎么合理对 ??? 进行修改使得权值最大,输出这个权值。一眼文理分科模型但是暴力建图只有 85pts85pts85pts 不尽如人意。

2021-07-14 16:24:09 105

原创 苏州国决前集训Day2 模拟测试

T1有一个排列,他想从这些数中找出一个子集 {Posi}\{Posi\}{Posi} 满足如下条件1.子集非空;2.所有对应位置的值异或和为 000;3.将这些对应位置的数按原顺序并成一个大数,使得这个数模 PPP 恰好为 000。对于所有数据有 n,P≤50000n,P\leq 50000n,P≤50000,PPP 是素数,排列随机生成。首先考虑 n≤31n\leq 31n≤31 的部分分怎么做?DpDpDp 即可。设 fi,j,kf_{i,j,k}fi,j,k​ 表示前 iii 个异或和为

2021-07-12 23:10:58 190 1

原创 苏州国决前集训Day1 模拟测试

T1有一个 n∗nn*nn∗n 的矩阵,每个格子有一个数,最开始在格子 (1,1)(1,1)(1,1),最终想要到达 (n,n)(n,n)(n,n),每一步只能往右或者往下走一格。第 iii 行,第 jjj 列的数是 Ai∗Bjmod  CA_i*B_j\mod CAi​∗Bj​modC,一条路线的价值是路线上所有数的和,我们想要求出最大的价值以及这条路线,如果有价值相同的路线,输出任意一组解。n≤104,0≤Ai,Bi,C≤2∗104n\leq 10^4,0\leq A_i,B_i,C\leq 2*

2021-07-11 22:48:58 134

原创 线性代数详解

正题线性组合:对于 nnn 维向量组 aia_iai​ 和系数 kik_iki​,称为其对应的线性组合为 ∑i=1maiki\sum_{i=1}^m a_ik_i∑i=1m​ai​ki​ 。向量空间:对于一个 nnn 维向量的集合 VVV ,我们称其是一个向量空间,当且仅当 VVV 的任意两个向量的任意线性组合仍 ∈V\in V∈V 。生成空间:对于 nnn 维向量组,我们称其生成空间为其所有线性组合组成的集合。线性相关:对于 nnn 维向量组,我们称其为线性相关的,当且仅当他们可以通过不全为 00

2021-07-02 11:59:25 961

原创 Min_25筛详解

正题例题:loj6053:简单的函数Min_25筛是用来解决积性函数前缀和问题的。这个积性函数要满足下面几个性质:1.对于一个质数 ppp,f(p)f(p)f(p) 一定要是关于 ppp 的一个多项式2.对于一个质数 ppp ,计算 f(pc)f(p^c)f(pc) 的时间不能太大。例题满足上述两个条件:因为对于一个大于 222 的质数 ppp ,有 f(p)=p−1f(p)=p-1f(p)=p−1,而且 f(pc)f(p^c)f(pc) 很好计算。现在只关注质数位置上的值,将 f(x)f(

2021-06-30 20:59:25 1875

原创 杜教筛详解

正题杜教筛是用来解决某些积性函数求前缀和的问题的。例如求 ∑i=1nμ(i)\sum_{i=1}^n \mu(i)∑i=1n​μ(i) 或者 ∑i=1nφ(i)\sum_{i=1}^n \varphi(i)∑i=1n​φ(i) 。下面我们以 ∑i=1nμ(i)\sum_{i=1}^n \mu(i)∑i=1n​μ(i) 为例子,详细说说杜教筛到底是如何运作的。有 μ∗1=e\mu * 1=eμ∗1=e ,那么可以得到 :1=∑i=1ne(i)=∑i=1nμ(i)∑j=1⌊ni⌋1(j)=∑i=1n∑j

2021-06-30 20:30:51 448

原创 二次剩余详解

正题(ap)(\frac a p)(pa​) 记为勒让德符号,ppp 是一个奇素数。(ap)=1(\frac a p)=1(pa​)=1 表示 aaa 是模 ppp 域下的二次剩余,(ap)−1(\frac a p)−1(pa​)−1 表示是二次非剩余,(ap)=0(\frac a p)=0(pa​)=0 表示 a≡0(modp)a\equiv 0\pmod pa≡0(modp)。计算方法(欧拉准则):(ap)=ap−12(\frac a p)=a^{\frac {p-1} 2}(pa​)=a2p−1

2021-06-30 18:35:44 805

原创 原根相关详解

​正题原根相关定义群:非空集合 GGG 上定义了一种二元运算,满足封闭性、结合律、单位元、逆元。环:非空集合 RRR 上定义了加法和乘法,在加法下构成交换群,满足乘法结合律、分配律。域:非零元素都可逆的满足交换律的环。(也就是交换幺环)循环群:指群可以由一个元素生成:G=x,x2,x3...G = x,x^2,x^3...G=x,x2,x3...。阶:满足 xd=1x^d = 1xd=1 的最小正整数 ddd。记为 ord(x)。xm=1x^m = 1xm=1 当 且仅当 ord(x)∣mor

2021-06-30 18:20:26 531 1

原创 强联通分量,双联通分量详解

正题强联通分量我们开两个数组 low,dfnlow,dfnlow,dfn 。dfndfndfn 表示 iii 点的 dfsdfsdfs 序, lowlowlow 表示 iii 点能到达的最小的 dfsdfsdfs 序。有两个步骤:若存在边 (x,y)(x,y)(x,y) ,且 yyy 未被遍历,那么遍历 yyy ,然后用 low[y]low[y]low[y] 更新 low[x]low[x]low[x] 。若存在边 (x,y)(x,y)(x,y) ,且 yyy 在栈内,那么用 dfn[y]dfn[y

2021-06-30 16:41:47 159

原创 二分图详解

正题性质二分图不存在奇环所以二分图判定可以使用黑白染色。最大匹配=最小点覆盖对于每个匹配,只需要选择连接非匹配点的一个端点即可,在一个匹配中,这样的端点至多只会有一个,否则会产生新的匹配,而每个匹配都至少需要一个点,且两两匹配端点不重合,所以最大匹配=最小点覆盖。最小边覆盖=顶点数-最大匹配设顶点数是 nnn , 最大匹配是 mmm ,覆盖的点数是 2m2m2m ,剩下来的设为 aaa ,那么 2m+a=n2m+a=n2m+a=n ,总共用了 m+a=n−mm+a=n-mm+a=n−m 。最

2021-06-30 16:39:54 1293

原创 网络流详解

正题基本算法最大流算法:DinicDinicDinic费用流算法:EK+SPFAEK+SPFAEK+SPFA可行流定义:容量限制:所有边的流量不高于上界,不低于下界流量平衡:除源汇外,所有点入流量 === 出流量时间复杂度DinicDinicDinic:每次 bfsbfsbfs 分层,dfsdfsdfs 找增广路,暴力加,当前弧优化,时间复杂度 O(n2m)O(n^2m)O(n2m) 。DinicDinicDinic的时间复杂度很玄学,在大部分情况下都远远好于上面这一个复杂度,下面是两个例

2021-06-30 16:19:28 716

原创 专题总结:字符串

正题字符串问题的关键就是对算法的理解和代码能力。Hash对于基的取值,直接看看字符集大概是多少,取足够大就可以,p要取较大的一个质数,否则就可以中国剩余定理将其拆开变成多个同余式,降低强度。比较两个不同串,就有 1p\frac 1 pp1​ 的概率失败,期望比较 ppp 次就会出现错误,所以我们可以直接使用比较次数 /p/p/p 来得出我们错误的概率。如果比较 n2n^2n2 次或者以上,我们可以直接使用双哈希(四哈希)会更稳妥一些。不建议使用自然溢出哈希,有通用的 hackhackhack 方

2021-06-29 20:59:52 138

原创 群论:Burnside引理与Polya定理

正题在数学中,群表示一个拥有满足封闭性、满足结合律、有单位元、有逆元的二元运算的代数结构,包括阿贝尔群。置换,简单来说就是对元素来进行一种重排列,即 [1,n][1,n][1,n] 映射到 [1,n][1,n][1,n]。比如排列 [1,3][1,3][1,3] 的全部置换,单位元为 {1,2,3}\left\{1,2,3\right\}{1,2,3},{2,3,1}\left\{2,3,1\right\}{2,3,1} 的逆元为 {3,1,2}\left\{3,1,2\right\}{3,1,2}。

2021-06-29 19:16:26 218

原创 数论专题总结

正题总结一下常见的算法和定理,不作证明与解释素数判定-Miller Rabbin算法大纲不作要求要判定 nnn 是否为质数,随机一个数 xxx ,看是否为 111 ,如果是,若可以将其开方那么就开,根据二次探测定理,x2≡1(mod  p)x^2\equiv1(\mod p)x2≡1(modp) 当且仅当 x=1x=1x=1 或 p−1p-1p−1 ,那么就可以检测,代码如下。bool MR(int n){ if(n<3) return n==2; int a=n-1,b=0; whi

2021-06-29 16:50:47 175

原创 动态规划详解

正题动态规划的基本思路找出某种可以描述当前状态的方法,并且通过合理的转移与状态的压缩,在满足无后效性和无转移环的情况下得出所求状态的解。简单动态规划1.记忆化搜索的基本方法2.常见的动态规划模型3.背包4.区间Dp5.LIS LCS 回文6.树上Dp7.数位Dp8.状态压缩Dp上述算法在我的博文或者其他一些博主的博文中可以快速学习,在此不再赘述。在动态规划时需考虑状态的数量,转移的数量与状态转移是否可能形成闭环。如果有其一不满足那么就需要重新设计状态,优化转移速度或改变转移方式。

2021-06-29 15:11:50 178

原创 图论专题总结

正题最小生成树Kruskal每次找出联通两个不同联通块的最短的边,将两个联通块合并,可以通过反证法证明得到的生成树最小。同时,如果要求次小生成树或者严格次小生成树,只会改变恰好一条边,改两条边或以上不会更优。Prim维护已经在最小生成树中的点集 SSS ,每次找出 SSS 向外连出的最短边,将该边的另一端点加入 SSS中。Boruvka对于每个联通块先求出一条到该点所在联通块外的最短边,最后一起合并即可。这样每次会至少减少⌈n2⌉\lceil \frac n 2\rceil⌈2n​⌉个点,

2021-06-29 10:21:03 190

原创 Floyd与Johnson最短路

正题这两个为什么要放在一起讲?这两个都可以处理有负边的多源最短路.但是 FloydFloydFloyd 好像比 JohnsonJohnsonJohnson 最短路的用处更大,尤其是在最小环问题上。Floyd简简单单的两行代码,蕴藏了很多玄机?for(int k=1;k<=n;k++) for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) f[i][j]=min(f[i][j],f[i][k]+f[k][j]);首先第一行枚举的是中间的转移

2021-06-28 22:03:50 216

原创 同余最短路,搞定正整数方程组解

正题当出现形如“给定 nnn 个整数,求这 nnn 个整数能拼凑出多少的其他整数( nnn 个整数可以重复取 )))”,以及“给定 nnn 个整数,求这 nnn 个整数不能拼凑出的最小(最大)的整数”的问题时可以使用同余最短路的方法。同余最短路利用同余来构造一些状态,可以达到优化空间复杂度的目的。我们以这一题来作为引入。如果我们能求出,不用a1,a2-an在a1的剩余系中对于每一个x,所能组成的最小整数,那么我们就可以通过不断+a1得到所有%a1=x的所有解,进而算出[l,r]中%a1=x可行的有多

2021-06-28 21:31:18 154

原创 容斥原理详解

正题设 UUU 中 nnn 种元素有不同的属性 PiP_iPi​ ,拥有属性 PiP_iPi​ 的元素集合为 SiS_iSi​。那么就有⋃i=1nSi=∑k=1n(−1)k−1⋂1≤j≤kSaj[a1≥1,ak≤n,ai≤ai+1∣1≤i<k]\small \bigcup_{i=1}^n S_i=\sum_{k=1}^n (-1)^{k-1}\bigcap_{1\leq j\leq k} S_{a_j}[a_1\geq 1,a_k\leq n,a_i\leq a_{i+1}|1\leq i&l

2021-06-28 19:12:37 157

原创 伯努利数详解

正题​我们来考虑 ∑i=0nik\sum_{i=0}^n i^k∑i=0n​ik 如何用与 kkk 相关的时间快速计算。我们记 S(n,k)=∑i=0nikS(n,k)=\sum_{i=0}^n i^kS(n,k)=∑i=0n​ik 。我们构造其关于 kkk 的 EGFEGFEGF ,则有:Gn(x)=∑k=0∑i=0nikxkk!=∑i=0n∑kikxkk!=∑i=0nexi\\G_n(x)=\sum_{k=0}\sum_{i=0}^n i^k\frac{x^k}{k!} \\=\sum_{i

2021-06-28 18:48:54 972

原创 斯特林数求解

正题第二类斯特林数-行根据通项公式有:S(n,m)=1m!∑i=0mCmi(−1)i(m−i)nS(n,m)=\frac{1}{m!}\sum_{i=0}^mC_m^i(-1)^i(m-i)^nS(n,m)=m!1​∑i=0m​Cmi​(−1)i(m−i)n拆开来就可以变成卷积的形式.第一类斯特林数-行第一类斯特林数实际上是上升幂展开成普通幂的系数,那么只需要多项式平移就可以倍增求出。void gas(vi&f){ int n=f.size()-1,m=n/2; if(n==1){f

2021-06-28 17:07:15 217

原创 学习笔记第十六节:斯特林数

​正题第一类斯特林数s(n,k)s(n,k)s(n,k) 表示把 nnn 个数放进不分种类的 kkk 个非空的圆中的排列数。递推式为 s(n,k)=s(n−1,k−1)+(n−1)∗s(n−1,k)s(n,k)=s(n-1,k-1)+(n-1)*s(n-1,k)s(n,k)=s(n−1,k−1)+(n−1)∗s(n−1,k) 。s(n−1,k−1)s(n-1,k-1)s(n−1,k−1) 表示的是前 n−1n-1n−1 个排列成 k−1k-1k−1 个圆后,第 nnn 个自己成为一个独立的圆。(n

2021-06-28 16:49:37 433

原创 学习笔记第十八节:卡特兰数

正题定义卡特兰数的递推公式为h(0)=1,h(n)=∑i=0n−1h(i)h(n−i−1)∣(n≥1)h(0)=1,h(n)=\sum_{i=0}^{n-1}h(i)h(n-i-1)|(n\geq1)h(0)=1,h(n)=∑i=0n−1​h(i)h(n−i−1)∣(n≥1)容易构造卡特兰数的生成函数F(x)=∑i=0h(i)xiF(x)=\sum_{i=0} h(i)x^iF(x)=∑i=0​h(i)xi发现递推公式恰好可以写作为自卷积再上升一位,即F(x)=F2(x)x+1F(x)=F^2(x)x

2021-06-28 15:53:16 238

原创 组合数学详解

正题排列组合(a+b)m=∑i=0mCmiaibm−i∑i=0mCniCmi=Cn+mm∑i=0niCni=2n−1n∑i=0ni2Cni=2n−2n(n+1)∑i=0nCik=Cn+1k+1CnrCrk=CnkCn−kr−k\\(a+b)^m=\sum_{i=0}^m C_m^i a^ib^{m-i} \\\sum_{i=0}^m C_n^i C_m^i =C_{n+m}^{m} \\\sum_{i=0}^n iC_n^i=2^{n-1}n \\\sum_{i=0}^n i^2C_n^i =2^{n

2021-06-28 14:59:19 518 1

原创 AtCoder Grand Contest 019

费劲千辛万苦,终于自己独立做出了一场AGCAGCAGC,尽管蒟蒻总共花费了近5h5h5h,不过依旧很开心,今天晚上可以奖励自己吃点宵夜。A - Ice Tea Store按照2L2L2L的容量排个序,如果最小的是2L2L2L装的,那么就先拿2L2L2L装,再拿第二小的装剩下的,否则直接拿最小的装。#include<bits/stdc++.h>using namespace std;pair<int,int> e[4];int a,b,c,d,n;int main()

2021-04-28 21:24:01 196

原创 AtCoder Grand Contest 018

A - Getting Difference裴蜀定理#include<bits/stdc++.h>using namespace std;int n,k;int gcd(int x,int y){ return y==0?x:gcd(y,x%y);}int main(){ int x,ans=0,mmax=0; scanf("%d %d",&n,&k); for(int i=1;i<=n;i++) scanf("%d",&x),ans=g

2021-04-28 20:52:24 107

原创 AtCoder Grand Contest 017

A - Biscuits偶数不影响奇偶性,所以随便选,奇数的选择方案数恰好是2tot−12^{tot-1}2tot−1,具体证明二项式定理。#include<bits/stdc++.h>using namespace std;const int N=60;int n,t[2],k;int main(){ scanf("%d %d",&n,&k); int x; for(int i=1;i<=n;i++) scanf("%d",&x),t[x&a

2021-04-28 18:14:50 90

原创 AtCoder Grand Contest 016

A - Shrinking每一个字母可以把前一个染色,那么我们只需要枚举最后全部是什么字母,观察该字母两两之间的最大距离即可。最后一个字符到结尾的长度也要记录下来。#include<bits/stdc++.h>using namespace std;const int N=110;char s[N];int n,las[26],mmax[26];int main(){ scanf("%s",s+1);n=strlen(s+1); int ans=1e9; for(int

2021-04-28 17:48:38 83

原创 AtCoder Grand Contest 015

A - A+…+B Problem模拟题意#include<bits/stdc++.h>using namespace std;int n,a,b;int main(){ scanf("%d %d %d",&n,&a,&b); if(a==b || a<b && n>=2) printf("%lld\n",1ll*(n-2)*(b-a)+1); else printf("0\n");}B - Evilator模拟题

2021-04-25 20:20:18 85

原创 AtCoder Grand Contest 014

A - Cookie Exchanges若都为偶数且相同,显然无限轮。否则考虑存在不同的最低位,每经过一轮之后会−1-1−1,所以就只有logloglog次。#include<bits/stdc++.h>using namespace std;int a,b,c;int dfs(int x,int y,int z){ if((x&1) || (y&1) || (z&1)) return 0; return dfs((y+z)/2,(x+y)/2,(x+

2021-04-25 19:52:56 225

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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