emmm…蒟蒻第一次出来集训,也是2019年noip(现在应该叫csp的说)前最后一次外出集训…
感觉压力好大啊…毕竟才学了不到一年啊…
但不管怎样,接下来几天要好好加油啊!

DAY1

仅自己用的链接(file:///C:/Users/Belief、御风/Desktop/19.7.28)

主讲概率与期望。

基础概念:
(概率与期望入门必备知识)
1、随机变量:有多种可能的取值的变量
2、P(a)P(a)P(a):事件aaa发⽣的概率
3、E(x)E(x)E(x):随机变量xxx的期望值,E(x)=∑P(x=i)∗iE(x)=\sum P(x=i)*iE(x)=∑P(x=i)∗i
4、独⽴事件:互相不影响的事件,满⾜ P(ab)=P(a)P(b)P(ab)=P(a)P(b)P(ab)=P(a)P(b)
5、对于独⽴事件,我们有 E(ab)=E(a)E(b)E(ab)=E(a)E(b)E(ab)=E(a)E(b)
6、当 0<x<10<x<10<x<1 时,∑i=0∞xi=11−x\sum^\infty_{i=0} x^i=\frac 1{1-x}∑i=0∞​xi=1−x1​,∑i=0nxi=1−xn+11−x\sum^n_{i=0} x^i=\frac{1-x^{n+1}}{1-x}∑i=0n​xi=1−x1−xn+1​
7、期望的线性性:E(x+y)=E(x)+E(y)E(x+y)=E(x)+E(y)E(x+y)=E(x)+E(y)

常用技巧:
(介绍前缀和这一技巧)
1、对于离散变量xxx,P(x=k)=P(x<=k)−P(x<=k−1)P(x=k)=P(x<=k)-P(x<=k-1)P(x=k)=P(x<=k)−P(x<=k−1)
2、有nnn个随机变量x[1…n]x[1…n]x[1…n],每个随机变量都是从1…s1…s1…s中随机⼀个整数,求max(x[1…n])max(x[1…n])max(x[1…n])的期望
3、概率为ppp的事件期望1/p1/p1/p次后发⽣
emmm…
今天的话听课感觉还好,基本能听懂和理解但可能实际使用会emmm…毕竟我发现我代码能力有点菜。
所以还是在课后好好敲一下看吧。
然后…

老师推荐的神题???:
经典拿球问题和游走问题,嗯,帮助理解了一下,结果变式依然那么…
接下来又是经(mo)典(gui)的10个例题…
1、每次随机⼀个 [1,n][1,n][1,n] 的整数,问期望⼏次能凑⻬所有数
2、随机⼀个⻓度为 nnn 个排列 ppp,求 p[1…i]p[1…i]p[1…i] 中 p[i]p[i]p[i] 是最⼤的数的概率
3、问满⾜上⾯那个题的 iii 的个数的平⽅的期望
4、随机⼀个⻓度为 nnn 的排列 ppp,求 iii 在 jjj 的后⾯的概率
5、随机⼀个⻓度为 nnn 的排列 ppp,求它包含 w[1…m]w[1…m]w[1…m] 作为⼦序列/连续⼦序列的概率
6、有 nnn 堆⽯头,第 iii 堆个数为 a[i]a[i]a[i],每次随机选⼀个⽯头然后把那⼀整堆都扔了,求第 111 堆⽯头期望第⼏次被扔
7、随机⼀个⻓度为 nnn 的01串,每个位置是 111 的概率是 ppp ,定义 xxx 是每段连续的 111 的⻓度的平⽅之和,求E(x)E(x)E(x)
8、给⼀个序列,每次随机删除⼀个元素,问 iii 和 jjj 在过程中相邻的概率
9、给定⼀棵树,将他的边随机⼀个顺序后依次插⼊,求 u,vu,vu,v 期望什么时候连通
10、给 1…n1…n1…n 这 nnn 个数,每次随机选择⼀个还在的数并且删掉他的所有约数,求期望⼏次删完

还有鬼畜期望线性性练习题???:
1、给定 nnn 个硬币,第 iii 个硬币的价值为 w[i]w[i]w[i],每次随机取⾛一个硬币,获得的收益是左右两个硬币的价值的乘积,求期望总价值
2、有 nnn 个数 a[1…n]a[1…n]a[1…n],每次等概率选出两个数,然后合并成一个新的数放回来,得到的收益是新的数的值,求总收益的期望
3、给定一个数列列 w[1…n]w[1…n]w[1…n],随机一个排列列 hhh,如果 h[i]h[i]h[i] ⽐比 h[i−1]h[i-1]h[i−1] 和 h[i+1]h[i+1]h[i+1] 都大,就获得 w[i]w[i]w[i] 的收益,求期望收益
4、给出一棵树,一开始每个点都是白的,每次选一个白点将他子树里所有点染黑,求期望几次染黑整个树
5、有 nnn 个⿊黑球,mmm 个⽩白球,每次等概率取出一个球(不放回),将取出来的球的颜⾊色写成一个01序列列,求 ”01” 的期望出现次数

嗯,听的有点绕,要好好消化。。。
另外地方要找题多做啊。

DAY2

仅自己用的链接(file:///C:/Users/Belief、御风/Desktop/19.7.29)

emmm…本来准备昨天讲的分治被拖到了今天。

简单介绍一下:
分治即分而治之,是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。

比较普通的分治:
1、求所有区间的最大值之和
2、求所有区间的最大值乘最小值之和
3、求所有区间的gcd之和
4、求二维平面上最近点对
5、分治多项式乘法
(这些都可以通过将区间分成两个区间,来将问题分成两个⼦子问题)

介绍下二分:
二分其实是对答案进行分治,是分数规划问题。
(可以去了解一下整体二分)

CDQ分治:
把 [l,r][l,r][l,r] 分成 [l,mid][l,mid][l,mid] 和 [mid+1,r][mid+1,r][mid+1,r],考虑左边对右边的贡献。
题目有三维偏序,矩阵加,矩阵求和,缺1背包问题,缺点最短路问题,解地推式 f[n]=∑f[i]∗g[n−i]f[n]=\sum f[i]*g[n-i]f[n]=∑f[i]∗g[n−i]

点分治:
基于树上的节点进行分治,本质其实是将一棵树拆分成许多棵子树处理,并不断进行,点分治是处理树上路径的一个极好的工具,一般如果需要大规模处理树上路径,点分治是一个不错的选择。

时间分治:
加边删边询问两点是否连通

然后讲图论惹。

这个不详细说了,多找找题目做吧,特别注意Tarjan,圈套圈,最短路变式,二分图,Hall定理应用,判断偶环。

一些基础术语:
出度,入度,度数,无向图,有向图,欧拉回路,哈密尔顿回路,环,简单环,连通块,强连通块,点双连通分量,边双连通分量,深度优先搜索(dfs),广度优先搜索(bfs)

一些基本算法:
Dijkstra,Bellman-Ford,SPFA(以及卡掉它的办法),Floyd 算法,Tarjan,圈套圈

一些题目类型:
判断负环,差分约束,次短路,最短路变式,求桥,求强联通分量,数环,欧拉回路,最小生成树,Prufer序列,二分图,Hall定理应用

接下来是字符串。

字符串不是很好,还需要多思考一下。

Hash:
比较两个字符串是否相等

KMP(还有AC自动机):
求两字符串最长的相等前后缀或一个串的最小循环节

后缀数组:
用来求最长重复子串,不可重叠最长重复子串,本质不同的子串个数,求 S[l…r] 的出现次数,高度总结一个公式 lcp(x,y)=min(h[p[x]]...h[p[y]−1])lcp(x,y)=min(h[p[x]]...h[p[y]-1])lcp(x,y)=min(h[p[x]]...h[p[y]−1]),然后我这块挂了。

后缀自动机:
有个后缀树需要了解,这块也挂了,不介绍过多了。。。

DAY3

仅自己用的链接(file:///C:/Users/Belief、御风/Desktop/19.7.30)

组合计数。

介绍容斥原理:
列出题目中的 nnn 个条件,求满足这 nnn 个条件中每一个的方案的个数
枚举这些条件的所有 2n2^n2n 个集合,考虑一个集合 ppp,令不满足 ppp 中所有条件的方案有 aaa 个,如果 ppp的大小是奇数,给答案减去 aaa,不然给答案加上 aaa

欧拉函数:
求 [1,n][1,n][1,n] 之间与 nnn 互质的数的个数
枚举每个因子放与不放

说一下补集思想:
正难则反,满足条件的=全部的-不满足条件的

连通图的数量:
连通图的数量=图的总数-不连通图的数量,而不连通数量可以计算。
欧拉图的数量也能用相同的方法计算。

线性性:
一般在求期望中使用的 E(x+y)=E(x)+E(y)E(x+y)=E(x)+E(y)E(x+y)=E(x)+E(y) 在组合计数时也可以用,具体考虑每个元素对答案的贡献

Burnside引理:
xxx 在置换 GGG 作用下的轨道等于每个置换群下不动元素的和除掉 GGG 的大小

之后就在讲杂题惹

DAY4

仅自己用的链接(file:///C:/Users/Belief、御风/Desktop/19.7.31)

上午三个人一组ACM

呃,5个小时11道题我们只过了5题,真的是太菜了呀。要知道都有人ak了呀!!!(不过听说这是正睿史上第一次ACM赛有人ak。。。)
开场1,2两题想的太复杂老半天没做出来。后面抱着侥幸心理试一下暴力,然后过了。。。
之后我开始弄我jio得可能可以的题(真香),另外两个队友在讨论另外一道,结果看的两道题我都无法实现,叫队友帮忙,结果尝试还是过不了,索性切了题。然后我过了一道,队友过了一道,又回来看之前两道中的一道,搞了半天过了。然后一看时间不够了,索性弃疗吃饭去吧。

下午讲解

听了1,2题,才明白其实这就是正解。
听老师说自己预期的签到题没什么人过,明明很难好吧。。。
另外基本也听懂了,就是赛后要好好消化一下啊。
然后,果然队员还是很有用很重要的啊,虽然这次真的不怎么好(49个队,35名),不过重在参与吧。
要加油啊。

DAY5

仅自己用的链接(file:///C:/Users/Belief、御风/Desktop/19.8.1)

初次接触网络流

介绍下定义:
一个网络流 G=(V,E)G=(V,E)G=(V,E) 为一张满足一下条件的有向图:
1、每一条边有一个非负容量,即对于任意 EEE 中的 (u,v)(u,v)(u,v),有 c(u,v)>=0c(u,v)>=0c(u,v)>=0
2、如果 GGG 中存在边 (u,v)(u,v)(u,v),那么不存在 (v,u)(v,u)(v,u)。我们将图中不存在的边的容量定为0
3、图中含有两个特殊节点(源 sss 和汇 ttt)
一个流可看作是从 V∗VV*VV∗V 到 RRR 的映射,满足下面两条性质:
1、容量限制:对于任意的 u,vu,vu,v,0<=f(u,v)<=c(u,v)0<=f(u,v)<=c(u,v)0<=f(u,v)<=c(u,v)
2、流量守恒:对于任何非源汇的中间节点 uuu,满足 ∑v∈Vf(v,u)=∑v∈Vf(u,v)\sum_{v\in V} f(v,u)=\sum_{v\in V} f(u,v)∑v∈V​f(v,u)=∑v∈V​f(u,v)

最大流问题:
找出一个满足上述条件的 fff,使得 ∑v∈Vf(s,v)\sum_{v\in V} f(s,v)∑v∈V​f(s,v) 被最大化,一个流 ∣f∣|f|∣f∣ 定义为 ∣f∣=∑v∈Vf(s,v)−∑v∈Vf(v,s)|f|=\sum_{v\in V} f(s,v)-\sum_{v\in V} f(v,s)∣f∣=∑v∈V​f(s,v)−∑v∈V​f(v,s)(由于在 GGG 图中不存在反向边,因而在上面的讨论中只需要最大化前半部分)
拓展带反向边的最大流问题和多源汇最大流问题

建模:
1、是否存在从s到t的可经过相同节点不经过相同边的两条路径?
2、是否存在从s到t的不可经过除s、t外相同节点的两条路径?
3、是否存在从s到t的不可经过除s、t外相同节点和相同边的两条路径?
点容量解决方法:拆点,将容量限制转化到边上

最大流的基本想法:
残量网络:
1、对于网络G,其残量网络G_f与G的差别在于每条边的边容量修改为G中边容 量减去当前流的该边流量。具体来说,cf(u,v)=c(u,v)−f(u,v)c_f (u,v)=c(u,v)-f(u,v)cf​(u,v)=c(u,v)−f(u,v)
2、另外,残量网络中还包含原图中所有边的反向边,容量等同于正向边在f中 当前流量,用于“反悔”时将流送回起点: cf(v,u)=f(u,v)c_f (v,u)=f(u,v)cf​(v,u)=f(u,v)
增广:
令 f′f'f′ 为残量网络 GfG_fGf​ 上的一个流 (f↑f′)(u,v)=(u,v)∈E?f(u,v)+f′(u,v)−f(v,u):0(f\uarr f')(u,v)= (u,v)\in E ? f(u,v)+f'(u,v)-f(v,u) : 0(f↑f′)(u,v)=(u,v)∈E?f(u,v)+f′(u,v)−f(v,u):0
引理1:
增广后的网络的流量等于两个流流量直接相加
因为这是流(那条性质)而且流量相同,所以 ∣f↑f′∣=∣f∣+∣f′∣|f\uarr f'|=|f|+|f'|∣f↑f′∣=∣f∣+∣f′∣
增广路:
1、残量网络当中 sss 到 ttt 的一条简单路径
2、增广路 ppp 的流量定义为 cf(p)=min(u,v):(u,v)∈pc_f (p)=min{(u,v):(u,v) \in p}cf​(p)=min(u,v):(u,v)∈p
3、若是将 ppp 上的每条边的流量均赋为 cf(p)c_f (p)cf​(p),所形成的依然是满足条件的原图的一个流
结论1:
增广后流量增加,即令 fpf_pfp​ 为当前流f的残量网络中找到的一增广路,则 ∣f↑fp∣=∣f∣+∣fp∣>∣f∣|f\uarr f_p|=|f|+|f_p|>|f|∣f↑fp​∣=∣f∣+∣fp​∣>∣f∣
割:
为一个对于点集 VVV 的划分,将 VVV 划分为两个集合 SSS 与 TTT,其中源点 sss 在 SSS 中,汇点 ttt 在 TTT 中。对于一个流 fff 而言,割 (S,T)(S,T)(S,T) 间的网络流定义为 f(S,T)=∑u∈S∑v∈Tf(u,v)−∑u∈S∑v∈Tf(v,u)f(S,T)=\sum_{u\in S} \sum_{v\in T} f(u,v)-\sum_{u\in S} \sum_{v\in T} f(v,u)f(S,T)=∑u∈S​∑v∈T​f(u,v)−∑u∈S​∑v∈T​f(v,u)
割 (S,T)(S,T)(S,T) 的容量定义为 c(S,T)=∑u∈S∑v∈Tc(u,v)c(S,T)=\sum_{u\in S} \sum_{v\in T} c(u,v)c(S,T)=∑u∈S​∑v∈T​c(u,v)
对一个网络而言,最小割为所有的割当中容量最小的那个
引理2:
由流量守恒导出,对于任意流 fff,任意割之间的网络流量不变,即 f(S,T)=∣f∣f(S,T)=|f|f(S,T)=∣f∣
结论2:
∣f∣=f(S,T)=∑u∈S∑v∈Tf(u,v)−∑u∈S∑v∈Tf(v,u)<=∑u∈S∑v∈Tf(u,v)<=∑u∈S∑v∈Tc(u,v)=c(S,T)|f|=f(S,T)=\sum_{u\in S} \sum_{v\in T} f(u,v)-\sum_{u\in S} \sum_{v\in T} f(v,u)<=\sum_{u\in S} \sum_{v\in T} f(u,v)<=\sum_{u\in S} \sum_{v\in T} c(u,v)=c(S,T)∣f∣=f(S,T)=∑u∈S​∑v∈T​f(u,v)−∑u∈S​∑v∈T​f(v,u)<=∑u∈S​∑v∈T​f(u,v)<=∑u∈S​∑v∈T​c(u,v)=c(S,T)
任意流f的流量不超过任意割的容量,即 ∣f∣<=c(S,T)|f|<=c(S,T)∣f∣<=c(S,T)
最大流最小割定理:
对于一个网络 GGG,下面三个命题总是等价:
1、流 fff 是 GGG 的最大流
2、当前流 fff 的残留网络 GfG_fGf​ 上不存在增广路
3、存在某个割使得 ∣f∣=c(S,T)|f|=c(S,T)∣f∣=c(S,T),它即是最小割
证明自己搜一下吧,我也没太懂

Ford-Fulkerson算法:
Ford-Fulkerson (G,s,t){for each edge (u,v) ∈ G,E(u,v).f=0while there exists a path p from s to t in the residual network G_f{c_f(p)=min{c_f(u,v):(u,v) ∈ p}for each edge (u,v) ∈ pif (u,v) ∈ E(u,v).f+=c_f(p)else(u,v).f-=c_f(p)}
}

Edmonds-Karp算法:
在EF的基础上,将增广路的过程优化为每次寻最短增广路的过程,其中路径长度定义为从 sss 到 ttt 需要经过的边条数
引理3:
在EK中,令 d(u)d(u)d(u) 表示残量单位网络上从 sss 到 uuu 的最短路距离,那么对于 VsV_sVs​ 中的任意 uuu,在每次增广后 d(u)d(u)d(u) 不降
定理:
在EK算法中,增广的次数是 O(VE)O(VE)O(VE),所以复杂度为 O(VE2)O(VE^2)O(VE2)
证明这里不给了

Dinic算法:
在EK的基础上,将每次寻找一条增广路优化为每次计算出一 个增广网络
在残量网络中,若两个端点间的最短路恰好差1,就称之为可行边,由所有可行边构成的图(最短路图),称为可行网络,在可行网络上的无法再扩充流量的流,称为阻塞流,注意不必是残量网络的 最大流,增广完一个阻塞流后,d(t)d(t)d(t)必增,因而最多增广O(V)O(V)O(V)次,增广单次的实现和时间复杂度:
1、一个节点的dfs至多被调用O(E)次。
2、for循环外部的时间复杂度之和为 O(VE)O(VE)O(VE)
3、for循环执行次数可分为只经过一次的和经过多次的
4、经过一次的复杂度之和为 O(E)O(E)O(E)
5、经过多次的次数之和为 O(VE)O(VE)O(VE)。
6、因此加了左边所有优化的dinic总复杂度为 O(V2E)O(V^2E)O(V2E)
(贴一下代码)

int dfs(int x,int sum)
{if(x==t||!sum) return sum;int res=0;for(int i=head[p];i;i=next[i]){int y=ver[i];head[x]=i;if(d[y]==d[x]+1&&w[i]){int tmp=dfs(v,min(sum-res,w[i])sd);res++tmp;w[i]-=tmp,w[rec[i]]+=tmp;}if(res==sum) return res;}if(!res) d[x]=-1;return res;
}

代码就是按某种顺序找增广路,一旦找到直接增广
(可以使用动态树优化找阻塞流并增广的过程,迭代次数不变,因而可以达到 O(VElogV)的复杂度)
阅读材料:
1、https://www.arl.wustl.edu/~jst/cse/542/text/sec19.pdf
2、http://courses.csail.mit.edu/6.854/16/Notes/n10-blocking_flows.html
单位容量网络指所有的存在的边容量均为1的网络
引理4:
dinic在单位容量网络中至多增广 O(min(E12,V23))O(min(E^\frac {1}{2},V^\frac {2}{3}))O(min(E21​,V32​)) 次
结论3:dinic在单位容量网络中寻找阻塞流可达O(E)复杂度
因此,在单位容量网络当中,dinic的时间复杂度可达 O(Emin(E12,V23))O(Emin(E^\frac {1}{2},V^\frac {2}{3}))O(Emin(E21​,V32​))
单位网络指对于 Vs,tV_{s,t}Vs,t​ 中的任意一节点,都满足下面两条之一
1、仅存在一条单位容量的入边
2、仅存在一条单位容量的出边
结论4:dinic在单位网络中效率可达 O(V12E)O(V^\frac {1}{2}E)O(V21​E) (跑二分图用)
例子:
最大权闭合子图(介绍略,自行再了解趴)
(证明再略,实在太多了,有空再加)

DAY6

仅自己用的链接(file:///C:/Users/Belief、御风/Desktop/19.8.2)

上午动态规划讲题

总结起来,灰常懵逼,找题目去练吧,没什么好多说的

下午树上数据结构

总结起来,还是灰常懵逼,我天这什么题有点崩溃啊。

DAY7

仅自己用的链接(file:///C:/Users/Belief、御风/Desktop/19.8.3)

数论专场

质因子分解:
素性测试:
试除法:
一种配合质数筛法可以做到 O(n)O(\sqrt n)O(n​) 的复杂度。
Miller-Rabin 素性测试:
可以做到 O(logn) 的复杂度,属于 RP 算法。
基本原理是费马小定理,于是对于某个 p,若能找到与它互质的 a 使得 ap−1≠1(modp)a^{p−1}\ne 1(mod p)ap−1​=1(modp),则 ppp 必不是质数。 然而有一些合数 ppp,满足所有与它互质的 aaa 都有 ap−1≡1a^{p−1}\equiv 1ap−1≡1 (mod ppp),这种数称为Carmichael 数(如 561=3∗11∗17),这样的数是用上面的方法检验不出来的。 所以还需要奇素数判定。对于奇素数 ppp,如果 ap−1≡1a^{p−1}\equiv 1ap−1≡1 (mod ppp) 即 (ap−12+1)(ap−12−1)≡0(a^\frac{p−1}{2}+1)(a^\frac{p−1}{2}−1)\equiv 0(a2p−1​+1)(a2p−1​−1)≡0 (mod ppp),由于 FpF_pFp​ 是整环, 所以 ap−12≡1a^\frac{p-1}{2}\equiv 1a2p−1​≡1 或 p−1p−1p−1。如果 p−12\frac{p−1}{2}2p−1​ 还是偶数则可以继续往下检验…用原根的一些理论可以证明这样就能保证对于任意合数至少 存在一个 aaa 可以判定它是合数。
其它还有印度人的AKS算法:
可以做到正确率 100% 的 O(logn) 复杂度。
但绝大多数情况 Miller-Rabin 都够优秀了。
质因子分解的方法:
试除法:
复杂度为 O(n)O(\sqrt n)O(n​),太慢。。。
Pollard’s Rho(又名启发式分解):
期望复杂度 O(n4logn)O(\sqrt[4] nlogn)O(4n​logn),nnn 是素数的时候用Miller-Rabin素性测试,不是素数的时候,复杂度只和最小的质因子有关,所以称为启发式
假如要分解一个数 nnn,首先进行素性测试,是素数直接返回。 否则就要生成一些随机的 x[i]x[i]x[i],去求 gcd(∣x[i]−x[j]∣,n)gcd(|x[i]−x[j]|,n)gcd(∣x[i]−x[j]∣,n),如果它 ∈(1,n)\in (1,n)∈(1,n) 则找到了 nnn 的一个因子,递归分解。 一个挺靠谱的随机方法就是 x←x2+cx\larr x^2+cx←x2+c,ccc 是个随机数。 这样随机出来的 xxx 可能会进入循环,假如进入循环了我们还没找到因子,就重新随个 xxx 和 ccc,重新做,可以证明 x←x2+cx\larr x^2+cx←x2+c,形成的一定是一个 ρρρ 形结构。 每次当 iii 为 222 的幂次的时候就令 y←x[i]y\larr x[i]y←x[i],如果某时刻 x[i]=yx[i]=yx[i]=y 了则说明已经在环上绕了一圈了,这样“浪费”的步数仅仅是 O(环长)O(环长)O(环长) 级别的。

数论:
欧几里德算法:
若 x∣a,x∣bx|a,x|bx∣a,x∣b,则 x∣(a+b)x|(a+b)x∣(a+b),于是 gcd(a,b)=gcd(b,agcd(a,b)=gcd(b,agcd(a,b)=gcd(b,a%b)b)b)
扩展欧几里德:
已知 a,ba,ba,b,求出 x,yx,yx,y 满足 a∗x+b∗y=gcd(a,b)a*x+b*y=gcd(a,b)a∗x+b∗y=gcd(a,b),在欧几里德算法中递归地求,若已有 b=0b=0b=0,则 gcd=agcd=agcd=a,令 x=1,y=0x=1,y=0x=1,y=0,否则求出 x′,y′x′,y′x′,y′ 满足 bx′+(a−a/b∗b)∗y′=gcd(b,abx′+ (a−a/b∗b)∗y′=gcd(b,abx′+(a−a/b∗b)∗y′=gcd(b,a%b)=gcd(a,b)b)=gcd(a,b)b)=gcd(a,b)。 于是 a∗y′+b∗(x′−a/b∗y′)=gcd(a,b)a∗y′ +b∗(x′−a/b∗y′) = gcd(a,b)a∗y′+b∗(x′−a/b∗y′)=gcd(a,b)。
辗转相减(除)的其他用法:
只要一个环定义了带余除法,就可以在上面辗转相减(除),比如模合数的环、多项式环等等。比如求行列式模一个合数,根据行列式的性质可以把一行的倍数加到另一行上。辗转相减把其中一个位置消成0即可。比如求两个多项式的最大公约式,或者说多项式取模,可以不停地把一个的倍数加到另一个上,把其中一个多项式变成0。
类欧几里德:
solve(n,A,B,C)=∑i=1n⌊A[i]+BC⌋solve(n,A,B,C)=\sum^n_{i=1}⌊\frac{A[i]+B}{C}⌋solve(n,A,B,C)=∑i=1n​⌊CA[i]+B​⌋,如果 A>=CA>=CA>=C,ans+=n(n+1)2∗(A/C)ans+=n(n+1)^2∗(A/C)ans+=n(n+1)2∗(A/C),然后 AAA%=C=C=C,如果 ∣B∣>=C|B|>=C∣B∣>=C,讨论下正负号算下,然后把 BBB 搞到 [0,C)[0,C)[0,C) 之间,设 m=⌊A[n]+BC⌋m=⌊\frac{A[n]+B}{C}⌋m=⌊CA[n]+B​⌋,则要算 ∑i=1n∑j=1m[C[j]<=A[i]+B]\sum^n_{i=1}\sum^m_{j=1}[C[j]<=A[i]+B]∑i=1n​∑j=1m​[C[j]<=A[i]+B],即 nm−∑j=1m∑i=1n[A[i]<=C[j]−B−1]nm−\sum^m_{j=1}\sum^n_{i=1}[A[i]<=C[j]−B−1]nm−∑j=1m​∑i=1n​[A[i]<=C[j]−B−1],即 nm−solve(m,C,−B−1,A)nm−solve(m,C,−B−1,A)nm−solve(m,C,−B−1,A)。每次 AAA 对 CCC 取模后互换位置,复杂度同欧几里德算法,为 O(logC)O(logC)O(logC)
(还有些需要补的)

DAY8

仅自己用的链接(file:///C:/Users/Belief、御风/Desktop/19.8.4)

第一题有些东西没考虑写挂了,0分。

第二题准备暴力拿分,于是就把暴力分拿完了,42分。

第三题做的时候心态爆炸,然后全部输出0,于是,0分。

总的42分,感觉其实第一题还是可以拿分的,就是自己没考虑完整,emmm。另外,这果然不是闹着玩的,不小心就要爆0掉rating什么的(虽然这次没有掉),今后要加油啊!

DAY9

仅自己用的链接(file:///C:/Users/Belief、御风/Desktop/19.8.5)

T1,T2打暴力打炸,T3打表都打炸了。

于是爆零,我自闭了。。。

DAY10

仅自己用的链接(file:///C:/Users/Belief、御风/Desktop/19.8.6)

三题全部敲了暴力代码(最暴力的),然后由于最后一题特判比别人多输出了一些东西,然后,运气爆发多过了一个点,于是超了好多人。

30、20、20,但分数还是不够啊,还要继续加油呢。

DAY11

仅自己用的链接(file:///C:/Users/Belief、御风/Desktop/19.8.7)

祝各位dalao七夕快乐!!!

跑题了跑题了…

T1挺简单的,但由于我太菜了,然后写炸爆0

T2暴力20分(本来想搞搞看70分的。。。)

T3有点难,40分挺满足了。。。

所以一共60分,还是低呀,要加油呢。

DAY12

仅自己用的链接(file:///C:/Users/Belief、御风/Desktop/19.8.8)

又是愉快的看ioiDAY2直播的一天

所以还是先说考试的事吧

T1、T2都不算难,但我又写炸,对自己感到绝望。。。

T3第一次做提答题,第二个点没更新到于是少了5分,得了33分emmm…

总共63分,但我又掉rating了,诶。。。

DAY13

仅自己用的链接(file:///C:/Users/Belief、御风/Desktop/19.8.9)

莫比乌斯反演

积性函数:
对于 (a,b)=1,f(ab)=f(a)f(b)(a,b)=1,f(ab)=f(a)f(b)(a,b)=1,f(ab)=f(a)f(b),那么 f(x)f(x)f(x) 为积性函数,欧拉函数就是积性函数,另外还有 d(x)=∑a∣x1,σ(x)=∑a∣xa,id(x)=x,l(x)=1,e(x)=1=>x=1d(x)=\sum_{a|x} 1 , σ(x)=\sum_{a|x} a , id(x)=x , l(x)=1 , e(x)=1 => x=1d(x)=∑a∣x​1,σ(x)=∑a∣x​a,id(x)=x,l(x)=1,e(x)=1=>x=1

狄利克雷卷积:
两个数论函数 f(x),g(x)f(x),g(x)f(x),g(x),令 h=f∗gh=f*gh=f∗g,那么 h(x)=∑a∣xf(a)g(xa)h(x)=\sum_{a|x} f(a)g(\frac{x}{a})h(x)=∑a∣x​f(a)g(ax​),易证满足交换律和结合律,两积性函数的卷积还是积性函数,f∗e=ff*e=ff∗e=f,注意,卷积不一定要求两个函数都是积性函数

莫比乌斯函数:
如果 F(n)=∑d∣nf(n)F(n)=\sum_{d|n} f(n)F(n)=∑d∣n​f(n),那么f(n)∑d∣nµ(d)∗F(nd)f(n)\sum_{d|n} µ(d)*F(\frac{n}{d})f(n)∑d∣n​µ(d)∗F(dn​),F=f∗l=>F∗µ=(f∗l)∗µ=f∗(l∗µ)=f∗e=fF=f*l=>F*µ=(f*l)*µ=f*(l*µ)=f*e=fF=f∗l=>F∗µ=(f∗l)∗µ=f∗(l∗µ)=f∗e=f,不要求 fff 为积性函数

筛法:
时间复杂度为 O(n∗log(log(n)))O(n*log(log(n)))O(n∗log(log(n)))

线性筛法:

void xxsf(){v[1]=1;p[1]=1;for(int i=1;i<=n;++i){if(!p[i]){p[i]=i;s[++ans]=i;v[i]=-1;}for(int j=1;j<=ans&&s[j*i]<=n;++j){p[s[j]*i]=s[j];if(p[i]==s[j]) break;else           v[s[j]*i]=-v[i];}
}

思想是保证每个合数只被他最小的素因子访问到,时间复杂度为 O(n)O(n)O(n),但自带大常数,可以求出一个积性函数的值

另外的不多说了,看pdf。

下午的时候听了一下模拟赛的讲解

感觉还好。

DAY14

仅自己用的链接(file:///C:/Users/Belief、御风/Desktop/19.8.10)

t1暴力写炸

t2打表过了40分

t3根本不会

然后只有40分,感觉真的太菜了啊,被人家完虐啊。。。

DAY15

仅自己用的链接(file:///C:/Users/Belief、御风/Desktop/19.8.11)

t1纯暴力10分

t2不会

t3没时间看

总计10分,我我我又被完虐了。。。

DAY16

仅自己用的链接(file:///C:/Users/Belief、御风/Desktop/19.8.12)

我自闭了,所以去c班听dp。。。

斯特林数:
第一类:
nnn 个数的排列中有 kkk 个“环”的方案数,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)
第二类:
nnn 个数分成 kkk 个集合的方案数,集合不可区分,s(n−k)=s(n−1,k−1)+k∗s(n−1,k)s(n-k)=s(n-1,k-1)+k*s(n-1,k)s(n−k)=s(n−1,k−1)+k∗s(n−1,k)

欧拉数:
nnn 个数的排列,其中有 kkk 个满足 p[i]<p[i+1]p[i]<p[i+1]p[i]<p[i+1] 的排列个数,e(n,k)=(k+1)+e(n−1,k)+(n−k)∗e(n−1,k−1)e(n,k)=(k+1)+e(n-1,k)+(n-k)*e(n-1,k-1)e(n,k)=(k+1)+e(n−1,k)+(n−k)∗e(n−1,k−1)

数位dp:
对十进制数或二进制数的某个统计,可能需要记录当前在第几位,上一个数字是什么,和题目有关的一些信息,当前位是否和限制相等,如果是多个整数,可能需要记录进位,错位等,当然还要注意前导零的问题

DAY17

仅自己用的链接(file:///C:/Users/Belief、御风/Desktop/19.8.13)

t1思考了一会,把特判全弄出来了,然后100分

t2调了好久还是炸了,0分

t3没时间写了,只敲了一个基本暴力,20分

总计120分,没有到预期成绩,策略不行啊。。。

下午有点懵逼。。。

DAY18

仅自己用的链接(file:///C:/Users/Belief、御风/Desktop/19.8.14)

背包dp:
nnn 个物品,每个物品有重量 w[i]w[i]w[i],求选出重量和不超过 sss 物品集合的方案数,经典的有01背包(每个物品最多选一次),无限背包(每个物品可以选无数次),多重背包(每个物品最多选 k[i]k[i]k[i] 个),进阶问题看pdf吧

树形dp:
求直径,求每个点到其他点的距离之和,求每个点到其他点的最长路径,求树上一个点权和最大的独立集,求树上有几个大小不超过 kkk 的独立集

区间dp:
看一下pdf就好吗,全是经典题目

状压dp:
同上吧。。。

另外一些奇怪的、比较难的题目自己搜一下吧

DAY19

仅自己用的链接(file:///C:/Users/Belief、御风/Desktop/19.8.15)

向我们传授了一下经验。

感觉这几天效果挺不错的,但还有很多坑,还要好好消化。

好好吸收经验,今后要加油哦!

结束了呢。。。

2019金华正睿集训总结相关推荐

  1. 2019.8.7 金华正睿集训总结Day11(ACM)

    8.7 在这个欢乐的七夕佳节,我们迎来了欢乐的ACM 于是,在和yjz大佬和yy大佬严肃(?)讨论后,我们的队名就叫七夕"快乐"(为什么加引号就不说了,qq情头是和小号的某) 在前 ...

  2. 2019.7.29 金华正睿集训总结Day2

    7.29 上午 分治 普通分治 • 通过将区间分成两个区间,来将问题分成两个子问题 例题: • 求所有区间的最大值之和 根据分治思想,对于每个区间,都递归分成两部分,边界为1 对于每个区间,先考虑固定 ...

  3. 2019.7.28 金华正睿集训总结Day1

    课表如下: 7.28 上午 概率与期望 基本概念 • 随机变量:有多种可能的取值的变量 • P(A):事件 A 发⽣的概率 • E(X):随机变量 X 的期望值,E(X) = ∑ i P ( X = ...

  4. 2019.8.8 金华正睿集训总结Day12

    8.8 贪心 讲了一堆例题 从普及到语言入门的贪心应用实例(Excuse me?) 找零问题 你去商店买东西, 收银员要找给你 ? 元. 一共有面值为 500, 100, 50, 10, 5, 1 的 ...

  5. 正睿集训数论专题【8.9】

    又到了"最简单"的数论了, 好开心啊~(。◕ˇ∀ˇ◕) 目录 简单数论 数论函数/算术函数 定义 内容 积性函数 定义 举例 性质 性质一 性质二 狄利克雷卷积 定义 性质 常用的 ...

  6. 7.29:正睿集训(人工智能峰会)day2

    今天,又重温了一下各种字符串的鬼畜算法,脑子仍是一团浆糊. kmp,扩展kmp,AC自动机,后缀数组,后缀自动机,Manacher,广义后缀自动机-这其中,出来扩展kmp和广义后缀自动机我一无所知外, ...

  7. 8.8 正睿暑期集训营 Day5

    目录 2018.8.8 正睿暑期集训营 Day5 总结 A 友谊巨轮(线段树 动态开点) B 璀璨光滑 C 构解巨树 考试代码 A B C 2018.8.8 正睿暑期集训营 Day5 时间:3.5h( ...

  8. 8.10 正睿暑期集训营 Day7

    目录 2018.8.10 正睿暑期集训营 Day7 总结 A 花园(思路) B 归来(Tarjan 拓扑) C 机场(凸函数 点分治) 考试代码 A B C 2018.8.10 正睿暑期集训营 Day ...

  9. 7.30 正睿暑期集训营 A班训练赛

    目录 2018.7.30 正睿暑期集训营 A班训练赛 T1 A.蔡老板分果子(Hash) T2 B.蔡老板送外卖(并查集 最小生成树) T3 C.蔡老板学数学(DP NTT) 考试代码 T2 T3 2 ...

最新文章

  1. C++:随笔8---命名空间
  2. 河南大学生带着捡来的妹妹求学12年
  3. eplan导出部件汇总表_干货分享:西门子产品数据表导入到博途和EPLAN应用举例...
  4. MAC电脑数据迁移方法
  5. leetcode24. 两两交换链表中的节点
  6. sql server2005索引
  7. OSError: [Errno 22] Invalid argument:**
  8. zznu 1996 : 正三角形和圆的爱情
  9. 中国主要水系、河流、湖泊数据矢量数据(shp格式)下载地址
  10. 计算机变异指标可以,变异系数公式_在EXCEL中怎样计算样本标准差和变异系数
  11. 大数据未来趋势和实用价值
  12. 【最新汇总】单细胞转录组分析与绘图系列
  13. 居民供暖室温无线监测系统
  14. python对excel指定数据提取并保存到另一excel表中(一)
  15. Java编程之屏幕上打印出n行的金字塔图案
  16. Vue2 面试题总结1(笔记自用)
  17. 使用SQLPLUS创建用户名和表空间
  18. Linux安装mysql并配置外网访问
  19. 问题: Mac外联硬盘不能更改“-”中的一个或多个项目,因为它们正在使用中
  20. 数据可视化(七):可视化设计实战

热门文章

  1. vs2010打开需要安装 service pack1
  2. 【渝粤教育】21秋期末考试马克思主义基本原理概论(A)10882k1
  3. 全国计算机注册时密码为什么老是错误,电脑密码正确却显示密码错误怎么办
  4. java 逗号分隔数字_java程序 输入n个数字,以逗号隔开,然后升序排列,再重新输出...
  5. Kaggle泰坦尼克号生存预测挑战——数据分析
  6. 由计算机谈最强大脑周玮
  7. 【SAP Hana】X档案:SAP HANA SQL 基础教程
  8. 冰刃-删除顽固文件的利器!
  9. vue 生成二维码海报并进行微信分享
  10. 万物互联之~网络编程基础篇