转眼就到了2020的下半年了…前方仍是一片茫然。

长期计划

prufer 序列

2020.07.02-2020.07.04

Problem Finished
P2624 [HNOI2008]明明的烦恼 ===
CF156D Clues √√√
CF1109D Sasha and Interesting Fact from Graph Theory √√√
P5219 无聊的水题 I √√√
AT3617 Unicyclic Graph Counting √√√
P5206 [WC2019] 数树 -

元芳圆方树

Problem Finished

week 1

2020.06.29-2020.07.05

At end of time.

2020.7.1

星期三总是最恐怖的一天,因为有化学考试…

[JSOI2008]最小生成树计数

想法挺简单的,就是代码难写…

对于同一个图的若干个最小生成树有一个很重要的结论,在kruskal算法每次加入完所有相等的边后,这个图的所有最小生成树的连通块组成相同。
因此我们只需要每次加完相同的边,显然每个连通块现在必须完全连通,我们在每个连通块内都做一次矩阵树定理,然后将这个连通块缩成一个点(保证计数不重复)。
答案显然就是这些行列式值的乘积。
复杂度均摊下来是O(n3)O(n^3)O(n3)的。
提交记录

P2624 [HNOI2008]明明的烦恼

sb prufer序列计数题,就是一个广义组合数。
记sum=∑di≠−1di,D=∑di≠−11sum=\sum_{d_i≠-1} d_i,D=\sum _{d_i≠-1} 1sum=∑di​​=−1​di​,D=∑di​​=−1​1
答案(n−2)!(n−2−sum)!∏i=1D(di−1)!(n−D)n−2−sum\frac{(n-2)!}{(n-2-sum)!\prod^D_{i=1}(d_i-1)!}(n-D)^{n-2-sum}(n−2−sum)!∏i=1D​(di​−1)!(n−2)!​(n−D)n−2−sum。
然而这题最大的亮点在于高精度…
提交记录

2020.7.2

[省选联考 2020 A 卷]作业题

省选联考套路垃圾题。
提交记录

[北京省选集训2019]生成树计数

省选联考题的加强版。
提交记录

P4981 父子

答案显然是nn−1n^{n-1}nn−1。

P4430 小猴打架

名字和题目描述疑似开车是这题最大的亮点。
答案显然是(n−1)!nn−2(n-1)!n^{n-2}(n−1)!nn−2。

CF156D Clues

注意到答案可以写成∑Tsum∏i=1ksizidegi\sum_{T}sum\prod^{k}_{i=1}siz_i^{deg_i}∑T​sum∏i=1k​sizidegi​​(sizisiz_isizi​为连通块大小,degideg_idegi​为连通块缩成点之后的树TTT对应该点的度数)。
又prufer序列性质可知,每个数在prufer中出现的次数加一即为degdegdeg。
那么我们可以发现每棵树答案必定会包含因子∏i=1ksizi\prod^k_{i=1} siz_i∏i=1k​sizi​,加下来会随意选k−2k-2k−2个数放进prufer序列中。
翻译成数学语言就是:
(siz1+siz2+...+sizk)k−2∏i=1ksizi=nk−2∏i=1ksizi(siz_1+siz_2+...+siz_k)^{k-2}\prod^k_{i=1} siz_i=n^{k-2}\prod^k_{i=1} siz_i(siz1​+siz2​+...+sizk​)k−2∏i=1k​sizi​=nk−2∏i=1k​sizi​
提交记录

CF1109D Sasha and Interesting Fact from Graph Theory

考虑先构造出这个路径,再在在这条路径上连上无关的点。
设在这条路径为PPP,我们枚举∣P∣|P|∣P∣,我们先再选∣P∣−2|P|-2∣P∣−2个点放在路径上并确定排列顺序,路径上的权值显然可以用插板法分配((∣P∣m−1)\binom{|P|}{m-1}(m−1∣P∣​))。
然后考虑将剩下的点连上去,其实只有第一个连上去的点序号必须是路径上的点中的一个,其他的点的序号是可以随意的,即∣P∣×nn−∣P∣−1|P|\times n^{n-|P|-1}∣P∣×nn−∣P∣−1。
提交记录

2020.07.03

P5219 无聊的水题 I

一开始看这道题以为是容斥题,后来发现我蠢了…

容斥只有在钦定了一些容量必选的时候才需要用到。
对于普通的=k=k=k到≤k\leq k≤k完全没必要用到容斥。

显然我们需要求每个点在prufer中出现次数均小于等于m−1m-1m−1的方案数。
显然可以设计背包dp:
dpi,j=∑k=1m−1(jk)dpi−1,j−kdp_{i,j}=\sum^{m-1}_{k=1}\binom{j}{k}dp_{i-1,j-k}dpi,j​=k=1∑m−1​(kj​)dpi−1,j−k​
因此我们得到了一个O(n2)O(n^2)O(n2)的做法。
这个dp显然可以用多项式优化。
先拆组合数:
dpi,jj!=∑k=0m−1dpi−1,j−k(j−k)!×1k!\frac{dp_{i,j}}{j!}=\sum^{m-1}_{k=0}\frac{dp_{i-1,j-k}}{(j-k)!}\times \frac{1}{k!}j!dpi,j​​=k=0∑m−1​(j−k)!dpi−1,j−k​​×k!1​
设F(x)=∑k=0m−11k!xkF(x)=\sum^{m-1}_{k=0}\frac{1}{k!} x^kF(x)=∑k=0m−1​k!1​xk,可得:
dpn,n−2=F(x)n[xn−2]×(n−2)!dp_{n,n-2}=F(x)^n[x^{n-2}]\times (n-2)!dpn,n−2​=F(x)n[xn−2]×(n−2)!
O(nlog⁡2n)/O(nlog⁡n)O(n\log^2 n)/O(n\log n)O(nlog2n)/O(nlogn)多项式快速幂均可。

实现的时候被多项式取模坑了好久。
多项式取模的正确方式:一开始长度至少扩展成两个多项式最高次的和,矩阵乘法做完之后再进行取模操作。

提交记录

2020.07.04

NOI Online 入门组的题好难啊…做了好久…居然还卡常数…
建议回幼儿园重学

[NOI Online #2 入门组]荆轲刺秦王

直接记忆化BFS即可…守卫的监察范围显然可以用O(n3)O(n^3)O(n3)差分解决。
然而该死的洛谷数据某个点卡时间,最后开着O2卡卡卡终于卡过…
提交记录

[NOI Online #2 入门组]建设城市

sb计数题做了半个小时…我真的是个人才…
提交记录

[NOI Online #1 入门组]魔法

首先考虑一个O(n2k)O(n^2k)O(n2k)的dp。
dp[u][k]=min⁡{dp[v][k−1]+w[v][u]}dp[u][k]=\min\{ dp[v][k-1]+w[v][u] \}dp[u][k]=min{dp[v][k−1]+w[v][u]}。
其中w[v][u]w[v][u]w[v][u]表示u−vu-vu−v之间用一次魔法能得到的最小距离,我们可以用Floyd+O(mn2)O(mn^2)O(mn2)预处理得到。
注意到题目中kkk比较大且每次转移相同,因此我们考虑矩阵快速幂。
那么初始矩阵即为Floyd得到的distdistdist矩阵,定义这个矩阵间的乘法就为两个矩阵做Floyd,那么答案矩阵就是:dist∗wkdist*w^kdist∗wk的(1,n)(1,n)(1,n)项。
复杂度O(n3log⁡k+mn2)O(n^3\log k+mn^2)O(n3logk+mn2)。
我们改变w[v][u]w[v][u]w[v][u]的定义可以做到O(n3log⁡k)O(n^3\log k)O(n3logk)。

tip:其实矩阵可合并性用图论的观点去理解要容易的多。

提交记录

[NOI Online #1 入门组]跑步

这题的根号分治做法挺好的。
首先这题就是一个裸的整数划分,根据我们之前学习的知识,我们知道两种做法:

  • 原问题可以看成是权重为1−n1-n1−n的nnn个物品放入nnn个背包的方案数。直接背包即可。
  • 根据某道经典的整数划分题,定义fi,jf_{i,j}fi,j​为将iii分成jjj个整数的方案数。
    fi,j=fi−1,j−1+fi−j,jf_{i,j}=f_{i-1,j-1}+f_{i-j,j}fi,j​=fi−1,j−1​+fi−j,j​。

注意到一个方法与插入数字种类数有关系,一个方法与划分个数有关系,根据一些根号分值相关的结论,很容易想到用根号分治将它们结合起来。

  • 对于1−n1-\sqrt{n}1−n​的物品,我们用方法一,复杂度O(nn)O(n\sqrt{n})O(nn​)。
  • 对于n+1−n\sqrt{n}+1-nn​+1−n的物品,我们用方法二,然而有一个问题就是如何限制不取1−n1-\sqrt{n}1−n​号物品,其实我们只需要改成 fi,j=fi−(n+1),j−1+fi−j,jf_{i,j}=f_{i-(\sqrt{n}+1),j-1}+f_{i-j,j}fi,j​=fi−(n​+1),j−1​+fi−j,j​,复杂度同样是O(nn)O(n\sqrt{n})O(nn​)。

最后合并背包即可,复杂度O(nn)O(n\sqrt{n})O(nn​)。
提交记录

[Atcoder CODE FESTIVAL 2017 Elimination Tournament Round 3]F - Unicyclic Graph Counting

不想写题解了怎么办?
搬大佬的博客
提交记录

2020.07.05

HDU 5498 Tree

有些无聊的一道拼凑出来的题。
首先我们先把原图能构成树的方案数求出来。
接下来考虑如何安排取这些边的顺序,显然可以dp。
设fi,jf_{i,j}fi,j​为现在操作iii次,加入了jjj条边的方案数。
我们有fi,j=j×fi−1,j+(n−j)×fi−1,j−1f_{i,j}=j\times f_{i-1,j}+(n-j)\times f_{i-1,j-1}fi,j​=j×fi−1,j​+(n−j)×fi−1,j−1​。
qqq比较大,需要矩阵快速幂解决。
复杂度:O(n3log⁡q)O(n^3\log q)O(n3logq)。
提交记录

51nod 1446 限制价值树/LOJ 6072「2017 山东一轮集训 Day5」苹果树

注意到生成树的种类数只由great点的个数决定,因此我们可以拆成两个问题。
定义mmm为good点个数,gig_igi​为恰好有iii个great点的树的个数,hih_ihi​为选iii个点使得其权值之和小于maxvalmaxvalmaxval的方案数。答案就是∑i=0mgi×hi\sum^{m}_{i=0}g_i\times h_i∑i=0m​gi​×hi​。
先考虑计算hih_ihi​,注意到n≤40n\leq 40n≤40,考虑用双向搜索的方法解决。合并的话我们可以利用单调性用双指针合并双搜得到的两个’物品’。
然后计算gig_igi​,考虑容斥。定义fif_ifi​为great点的个数至多是iii个的方案数,这显然是一个二项式反演的形式:
gi=∑j=0i(−1)i−j(ij)fjg_i=\sum^{i}_{j=0}(-1)^{i-j}\binom{i}{j}f_jgi​=j=0∑i​(−1)i−j(ji​)fj​
计算fif_ifi​很简单,我们只需要在完全图上去掉[1,i][1,i][1,i]连向[i+1,m][i+1,m][i+1,m]的边跑Matrix tree即可。
复杂度:O(n4+2n2n)O(n^4+2^{\frac{n}{2}}n)O(n4+22n​n)。
提交记录

[NOI2009]管道取珠

考虑组合意义得到一个O(n4)O(n^4)O(n4)dp,发现前两维和后两维和相等于是就是O(n3)O(n^3)O(n3)的了。
洛谷评测机越来越慢了…
提交记录

[APIO2016]划艇

没想出来…又失智了…
很容易设计出来一个有关值域的dp,然而这种做法一不优化一分都拿不到…
显然我们需要离散化,离散化过后值域变成了一整块(所有区间的两个端点排序,相邻的两个点组成一整块)。
考虑在没有任何条件限制下的一整块下如何安排人数,设块长为LLL,人数为xxx,那么方案数就为(xL)\binom{x}{L}(Lx​)。
意思是我们只需要知道某一块上安排了多少个人就可以知道在这块上安排的方案数。
那么我们设计f[i][j][k]f[i][j][k]f[i][j][k]表示已经确定了前iii个学校,其中在第jjj块已经安排了kkk个学校人数在这个范围内。
转移很简单:
f[i][j][k]+=(klenj)∑a=0j−1∑b=0i−1f[i−1][a][b](k=1)f[i][j][k]+=\binom{k}{len_j} \sum^{j-1}_{a=0} \sum^{i-1}_{b=0} f[i-1][a][b](k=1)f[i][j][k]+=(lenj​k​)a=0∑j−1​b=0∑i−1​f[i−1][a][b](k=1)
f[i][j][k]+=(klenj)(k−1lenj)f[i−1][j][k−1](k>1)f[i][j][k]+=\frac{\binom{k}{len_j}}{\binom{k-1}{len_j}}f[i-1][j][k-1](k>1)f[i][j][k]+=(lenj​k−1​)(lenj​k​)​f[i−1][j][k−1](k>1)
复杂度:O(n3)O(n^3)O(n3)。
实现上要注意:第一维需要滚动掉,第一个方程中bbb的上界可以缩小一些否则你谷过不了…
提交记录

week 2

2020.07.06-2020.07.12

要期末了啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊。

2020.07.06

今天终于不数数了xd…

[APIO2016]最大差分

早说先自己想一想的…结果先看了题解…

首先对于subtask1:我们从[0,INF][0,INF][0,INF]开始询问,得到A1,AnA_1,A_nA1​,An​,然后再查[A1+1,An−1][A_1+1,A_n-1][A1​+1,An​−1],得到A2,An−1A_2,A_{n-1}A2​,An−1​,以此类推。
这样做刚好能在n+12\frac{n+1}{2}2n+1​次询问之内完成。

subtask2比较巧妙:
这个子任务要求我们询问的长度尽量的小。
首先我们还是先得到A1,AnA_1,A_nA1​,An​。
有一个显然的性质是区间长度小于⌈An−A1n−1⌉\lceil \frac{A_n-A_1}{n-1}\rceil⌈n−1An​−A1​​⌉的一段是不会出现答案的,这样我们可以将区间[A1,An][A_1,A_n][A1​,An​]划分成≤n\leq n≤n段,那么我们对于每一段询问一次,我们只需要在段与段之间的差值中去最大即可。
这样做的代价是(n+1)+(n−2+n)=3n−1(n+1)+(n-2+n)=3n-1(n+1)+(n−2+n)=3n−1,恰好可以通过。
提交记录

CF691E Xor-sequences

矩阵乘法模板题。
提交记录

CF575A Fibonotci

注意到特殊位置只会修改O(m)O(m)O(m)级别的矩阵,其它的矩阵都是连续的一段区间。
没有修改的循环节我们可以直接矩阵快速幂。
有修改的循环节中没有被修改的段的个数也是O(m)O(m)O(m)级别的,用一个线段树维护这个段中矩阵的乘积即可。
然后这题就成了码农题。
提交记录

【模板】支配树

其实把那篇很长很长的论文看完就会发现其实和tarjan缩点算法是差不多的…
代码实现太抽象了,看了一下午才看懂…
提交记录

[ZJOI2012]灾难

DAG支配树模板题,利用定义找支配当前点的所有点在支配树上的LCA即为该点的父亲。
提交记录

CF757F Team Rocket Rises Again

建出最短路径图,可以证明这是一个DAG。
然后建出支配树然后取连通块内非sss点中最大的树siz即可。
提交记录

HDU6604 Blow up the city

第一次了解支配树就是因为这题。
本来打算学结果看了半天博客没看懂。(感觉论文还好懂些…)
这题我们只需要了解了’支配’的含义就可以了。
首先我们需要一个源点,注意到监控中心没有出度做这个特殊性质,我们可以取原图的反边,然后用一个源点连向所有的监控中心点。
在这个DAG上做一次支配树,显然对于一个点aaa有且只有支配树上它到根的路径上的点会使其无法到达监控中心,即dep[a]dep[a]dep[a]。对于两个点显然就是dep[a]+dep[b]−dep[LCA(a,b)]dep[a]+dep[b]-dep[LCA(a,b)]dep[a]+dep[b]−dep[LCA(a,b)]。
提交记录

[THUWC2020]道路修建

提交记录

2020.07.07-09

没想到这几天又开始数数了…
因为推导太长了写了一篇学习笔记:
[学习笔记]多项式与有标号无向图计数
不知道为什么,我学OI的热情一下子就被多项式给浇灭了(雾)。

2020.07.10

[JSOI2007]文本生成器

复习AC自动机。

[JLOI2016]成绩比较

复习拉格朗日插值。
题解见总blog

LOJ 6044「雅礼集训 2017 Day8」共

仔细观察题面发现就是求一个二分图的生成树个数。
然后我们利用prufer序列和Matrix来解出答案是(n−k)k−1kn−k−1(n−k)^{k−1}k^{n−k−1}(n−k)k−1kn−k−1。

week 3

2020.07.13-2020.07.19

暂停一周,准备期末考试。

week 4

2020.07.20-2020.07.26

暑假开始了

2020.07.20

暑假第一天,先放慢一下速度。

[期末]模板题(sa)

求是否存在TTT使得其与SSS的sasasa数组相同且TTT字典序小于SSS。

比较显然的一道结论题。
看完题目很容易猜到如果有解则一定存在一个解TTT使得它与SSS之间相差一个字符。
然而直接猜结论是一件很冒险的事情,我们需要大致证明一下。

证明:
首先显然sasasa相同的字符串它们的rankrankrank也相同。
考虑SSS与TTT的sasasa不相同时,一定存在一个关键数对(i,j)(i≠j)(i,j)(i≠j)(i,j)(i​=j)使得在SSS中ranki<rankjrank_i<rank_jranki​<rankj​,在TTT中ranki>rankjrank_i>rank_jranki​>rankj​。
如果ti≠tjt_i≠t_jti​​=tj​,如果要改变这个顺序我们只需要修改tit_iti​或tjt_jtj​中的任意一个字符即可。
如果ti=tjt_i=t_jti​=tj​,依据字典序的比较方式,我们可以得到(i+1,j+1)(i+1,j+1)(i+1,j+1)也是一个关键数对,以此类推得到(i+k,j+k)[k=1…p,ti+p−1=tj+p−1](i+k,j+k)[k=1\dots p,t_{i+p-1}=t_{j+p-1}](i+k,j+k)[k=1…p,ti+p−1​=tj+p−1​]都是关键数对,由于(i,j)(i,j)(i,j)是关键数对,那么(i+k,j+k)(i+k,j+k)(i+k,j+k)中一定有一个关键数对满足ti+k≠tj+kt_{i+k}≠t_{j+k}ti+k​​=tj+k​,即最后一个。
综上我们证明了出现关键数对只需要修改包含一个能够使某个ti≠tjt_i≠t_jti​​=tj​的位置,得证。

提交记录

[期末]奇迹果(fruit)

期末考试惊现作业题可还行…
原题:LOJ 6072「2017 山东一轮集训 Day5」苹果树
提交记录

[期末]氪肝手游(game)

原题:「from CommonAnts」一道数学题 加强版

如果不是考到了我才不敢碰这种神仙题目…
考场上整整坑了我三个小时。

题解在这篇学习笔记的最后一个例题中。

2020.07.25

2020.07.26

P6687 论如何玩转 Excel 表格

无聊的逆序对题,原题可以转化为两个序列通过交换达到各自目标状态的交换步数。
因此判断一下两序列是否同构然后输出逆序对数即可。
提交记录

P6688 可重集

用线段树维护区间最小值求出差值,然后再求区间hash值即可。
代码不想写。

P6689 序列

提交记录

week 6

2020.07.27-2020.08.03

由于某些原因,上周的做题记录被咕掉了。
[现在文章长了写起来一卡一卡的,很多内容都尽量转到别的地方去了…]

2020.07.27

CF750E New Year and Old Subsequence

写出dp转移方程,由于题目要询问区间,因此我们将dp写成矩阵的形式然后用线段树维护。
这题当然也可以支持修改。
一定要注意矩阵乘法的运算顺序问题,这需要依据你的dp顺序而定。

P4719 【模板】“动态 DP”&动态树分治

动态DP的本质就是利用矩阵和线段树实现快速修改求答案。
但是在树上,一个点关系到了若干的它的儿子,不是一个完美的区间关系。
于是我们运用树链剖分,每个点选出一个重儿子,对于重儿子的修改,我们也像之前一样的方式用线段树维护,其他儿子的暴力修改。
具体来说我们定义:
gx,0=∑v∈sonx且v≠hvsxmax⁡{fv,0,fv,1}g_{x,0}=\sum_{v\in son_x且v≠hvs_x}\max\{ f_{v,0},f_{v,1}\}gx,0​=∑v∈sonx​且v​=hvsx​​max{fv,0​,fv,1​}
gx,1=valx+∑v∈sonx且v≠hvsxfv,0g_{x,1}=val_x+\sum_{v\in son_x且v≠hvs_x}f_{v,0}gx,1​=valx​+∑v∈sonx​且v​=hvsx​​fv,0​
那么现在的转移式子为:
fx,0=gx,0+max⁡{fhvsx,0,fhvsx,1}f_{x,0}=g_{x,0}+\max\{ f_{hvs_x,0},f_{hvs_x,1}\}fx,0​=gx,0​+max{fhvsx​,0​,fhvsx​,1​}
fx,1=gx,1+fhvsx,0f_{x,1}=g_{x,1}+f_{hvs_x,0}fx,1​=gx,1​+fhvsx​,0​
写成矩阵形式之后,我们发现一次修改变的ggg是O(log⁡)O(\log)O(log)级别的,那么我们暴力修改这些ggg,其余的我们可以用线段树快速维护。
时间复杂度O(nlog⁡2n)O(n\log^2 n)O(nlog2n)

P6021 洪水

跟上面那题差不多,只是式子变了。

基础题练习1

CSP原题重做

2020.07.28

P5024 保卫王国

说是动态DP的题目,但是本题没有修改,可以用相对基础的倍增来解决这个问题。
具体来说我们知道修改两个点只会影响到它们之间的路径与其LCA到根的这一段路径,因此我们考虑定义w[x][k][0/1][0/1]w[x][k][0/1][0/1]w[x][k][0/1][0/1]表示强制xxx和fa[x][k]fa[x][k]fa[x][k]选或者不选的dp值最大和。
然后大概就可以做了。
这题细节特别多,例如在倍增过程中为我们需要处理这条链周围dp值的和,在LCA处我们需要特殊处理周围一圈的dp值的和,倍增过程分为u−>LCA,v−>LCA,LCA−>1u->LCA,v->LCA,LCA->1u−>LCA,v−>LCA,LCA−>1三段处理。

多校联合训练3

link

2020.07.29

SP6779 GSS7 Can you answer these queries VII

跟GSS3差不多,只是放在了树上,还带修改。
因此我们上树链剖分即可。
然而放在了树上之后我们同样需要考虑矩阵合并的顺序等等各种烦人的东西…
例如我们在线段树上需要分别维护从左到右乘和从右到左乘的乘积,同时我们还需要维护一个lazy tag记录修改情况。

CF599E Sandy and Nuts

其实是一道比较复杂的题目。
显然我们需要状压dp。
定义dp[x][S]dp[x][S]dp[x][S]为根为xxx的树包含点集为SSS的合法树的形态数。
那么我们每次从SSS中去掉一个xxx的某一个儿子的子树即可。
dp[x][S]=dp[x][S−S0]×dp[v][S0](x∉S0)dp[x][S]=dp[x][S-S_0]\times dp[v][S_0](x\notin S_0)dp[x][S]=dp[x][S−S0​]×dp[v][S0​](x∈/​S0​)
然而这样做会使得儿子与儿子之间有顺序,我们需要强制S0S_0S0​包含某一个点来保证不会计算重复。
显然我们需要判断这一种集合划分是否合法。
这要求我们把原题的限制转为等价的充要条件(转载一下AutumnKite
q大佬的wq):

  • 对于LCA\mathrm{LCA}LCA的限制: 1.1. 对于限制(a,b,c)(a,b,c)(a,b,c),如果c=uc=uc=u,但是a,b∈submaska,b\in submaska,b∈submask,那么LCA\mathrm{LCA}LCA一定不为ccc,不满足条件。 1.2. 对于限制(a,b,c)(a,b,c)(a,b,c), 如果c∈submaskc\in submaskc∈submask,但a,ba,ba,b中有至少一个不submasksubmasksubmask中,则LCA\mathrm{LCA}LCA一定不为ccc,不满足条件。
  • 对于边的限制: 2.1. 对于边(x,y)(x,y)(x,y),如果x,y≠ux,y\ne ux,y​=u,但是x,yx,yx,y其中一个在submasksubmasksubmask中,另一个不在,则这条边不可能在树上,不满足条件。 2.2. 如果uuu与iii有边且i∈submaski\in submaski∈submask的iii的数量大于111,则不可能有满足条件的树,不满足条件。

至于为什么这是充要条件…如果你知道这样可以做当然就很显然了…

2020.07.30

[学习笔记]图论提高题目选做

2020.07.31

[Cg 18]人生的意义(meaning)

简单处理一下环即可。
这样的人生没有意义.jpg

[Cg 18]玩游戏(game)

求出最小生成树之后用破圈法加边即可,由于加边操作很少,因此如果树边更换则重新处理倍增即可。
破圈法可以直接使用倍增找LCA。
当然如果加边操作多的话就只能LCT了。

[Cg 18]大括号树(bracket)

我们当然是要计算每个合法括号对对每个链的贡献。
其实直接用dsu on tree维护fi,gif_i,g_ifi​,gi​表示从父亲到儿子方向和从儿子到父亲方向不存在深度小于000且现在左括号/右括号失配iii个的路径的起点sizvsiz_vsizv​的和即可。
套用dsu的套路我们重链的fif_ifi​和gig_igi​保留,轻链暴力重新统计,然后在统计过程中计算LCA为xxx的链的答案之和即可。

2020.7月做题记录相关推荐

  1. 2020.9月做题记录

    八月的做题记录因为是暑假所以鸽掉了. 离联赛真的不远了,要继续努力啊qwq- week -1 2020.08.30 2020.08.30 今天考试,修了20+次锅,修的我都没有心情做题了- 然后开始消 ...

  2. 2020.10月做题记录

    PS:本博客仅选择了一些作者认为有必要记录的题目进行记录. week -1 2020.09.28-2020.10.4 军训+国庆放假-就这样又废了一周- 2020.10.04 回来第一天完全没有状态- ...

  3. 2020.6月做题记录

    长期计划 SAM专题 date:2020.05.21-2020.06.01 基础类: Problem Finished P3804 [模板]后缀自动机 (SAM) √√√ SP1811 LCS - L ...

  4. 2020.5月做题记录

    2020.5.3 NOI2016 优秀的拆分 [链接] 想写SAM结果自闭了. BZOJ3064 CPU监控 线段树历史最大值模板题. 注意到其实带维护历史最大值最大的问题时维护tag. 这里我们将t ...

  5. BUUCTF:8月做题记录

    目录 [*CTF2019]otaku 真的很杂 greatescape [INSHack2019]INSAnity [INSHack2019]Sanity 很好的色彩呃? [DDCTF2018]流量分 ...

  6. BUUCTF:7月做题记录

    目录 [UTCTF2020]fileheader [BSidesSF2019]zippy [UTCTF2020]basic-forensics [MRCTF2020]Hello_ misc [WUST ...

  7. ctfshow 网络迷踪做题记录(1)

    ctfshow 网络迷踪做题记录(1) -- 新手上路 找桥的名字. 附件为一张海边图片. 百度识图为蜈支洲岛,得到地点名,但还需要具体桥的名字. 再用搜索引擎搜索关键字,就可以看到结果中的" ...

  8. 概率期望题(期望 DP)做题记录

    概率期望题(期望 DP)做题记录 P3830 [SHOI2012]随机树 难点在于第二问:生成树的期望深度. 不 wei zhuo 捏,设 \(dp_{i,j}\) 表示已经有了 \(i\) 个叶子结 ...

  9. 数数题(计数类 DP)做题记录

    数数题(计数类 DP)做题记录 CF1657E Star MST 我们称张无向完全图是美丽的当且仅当:所有和 \(1\) 相连的边的边权之和等于这张完全图的最小生成树的边权之和. 完全图点数为 \(n ...

最新文章

  1. SQL压力测试用的语句和相关计数器
  2. 【CVPR 2020】一种新的门控通道注意力转换单元
  3. AI 四巨头 Google、DeepMind、Microsoft、Uber 深度学习框架大比拼
  4. 你可能会错过的3个重要AI趋势
  5. GDALWarp设置GDALWarpOptions::dfWarpMemoryLimit过大时处理失败
  6. this指针_c++11新特性之智能指针
  7. Another hard to gain financial feedback 又是一个融不到资金的创业项目
  8. PaaS服务之路漫谈(一)
  9. 《Android 应用案例开发大全(第二版)》——6.1节Android系统的信使:Intent
  10. python seaborn boxplot_python - 如何将文本框添加到Seaborn Boxplot? - 堆栈内存溢出
  11. c语言 callback回调函数
  12. iPhone 居然能当公交卡刷了?!
  13. Win10- 日历 - 周日在第一列显示 - 设置方法
  14. pytorch: Parameter 的数据结构
  15. 03. 二维数组中的查找(C++实现)
  16. 报 刊 集 锦(转载)
  17. 微信公众号开发框架讲解
  18. 如何将webp格式转换成png?
  19. 用无线局域网设置服务器,无线局域网怎样配置
  20. python 绕过国科大教务系统获取所有学生成绩

热门文章

  1. 网卡驱动描述符助手功能浅析
  2. golang中Channel通道(二)
  3. 电动汽车充电接口通信协议
  4. 2015.7.26-2015.7.31意大利米兰IGARSS-2015之行
  5. 跟牛老师一起学WEBGIS——GIS基础(空间数据)
  6. 数字藏品交易平台 nft数字藏品交易平台 数字藏品平台
  7. 双面板建滔6160降价活动
  8. 把默认桌面路径为C盘更换为别的盘,以便重做系统之后桌面文件消失不见方法
  9. 14.11 基类与派生类关系的详细再探讨
  10. PBOOTCMS中英双语企业网站模板