<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[m0_53373033的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/m0_53373033</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; m0_53373033]]></copyright><item><title><![CDATA[积性函数和杜教筛]]></title><link>https://blog.youkuaiyun.com/m0_53373033/article/details/125753099</link><guid>https://blog.youkuaiyun.com/m0_53373033/article/details/125753099</guid><author>m0_53373033</author><pubDate>Tue, 12 Jul 2022 22:02:58 +0800</pubDate><description><![CDATA[常见积性函数：(p,q)=1⇒f(pq)=f(p)f(q),  g(pq)=g(p)g(q)h(pq)=f(pq)g(pq)=f(p)g(p)⋅f(q)g(q)=h(p)h(q)
	(p,q)= 1\Rightarrow f(pq)=f(p)f(q),\ \ g(pq)=g(p)g(q)\\
	h(pq)=f(pq)g(pq)=f(p)g(p)\cdot f(q)g(q)=h(p)h(q)
(p,q)=1⇒f(pq)=f(p)f(q),  g(pq)=g(p)g(q)h(pq)=f(pq)g(pq)=f(p]]></description><category></category></item><item><title><![CDATA[FFT与拉格朗日插值]]></title><link>https://blog.youkuaiyun.com/m0_53373033/article/details/125692533</link><guid>https://blog.youkuaiyun.com/m0_53373033/article/details/125692533</guid><author>m0_53373033</author><pubDate>Sat, 09 Jul 2022 13:32:58 +0800</pubDate><description><![CDATA[​ 等形式，C(x)C(x)C(x) 的前 n+1n+1n+1 项的系数 c0,c1,…,cnc_0, c_1, \dots, c_nc0​,c1​,…,cn​ 仅仅需要 A(x),B(x)A(x), B(x)A(x),B(x) 的前 n+1n+1n+1 项系数就可以计算。
多项式 A(x),B(x)mod  xn+1A(x), B(x) \mod x^{n+1}A(x),B(x)modxn+1 代替形式幂级数 A(x),B(x)A(x), B(x)A(x),B(x)。
朴素多项式乘法、求逆、开根号等的复杂]]></description><category></category></item><item><title><![CDATA[生成函数Ⅰ]]></title><link>https://blog.youkuaiyun.com/m0_53373033/article/details/125638407</link><guid>https://blog.youkuaiyun.com/m0_53373033/article/details/125638407</guid><author>m0_53373033</author><pubDate>Wed, 06 Jul 2022 14:02:43 +0800</pubDate><description><![CDATA[设 A(x)=∑i≥0aixiA(x)=\sum_{i\ge 0}a_ix^iA(x)=∑i≥0​ai​xi，B(x)=∑i≥0bixiB(x)=\sum_{i\ge 0}b_ix^iB(x)=∑i≥0​bi​xi。例子：令A(x)=∑i≥0aixi，B(x)=∑i≥0bixi。则ck=∑i=0kaibk−iC(x)=∑k≥0∑i=0kaibk−ixk=A(x)×B(x)
	令 A(x)=\sum_{i\ge 0}a_ix^i，B(x)=\sum_{i\ge 0}b_ix^i。\\
    则 c_k=\s]]></description><category></category></item><item><title><![CDATA[Link Cut Tree 应用五]]></title><link>https://blog.youkuaiyun.com/m0_53373033/article/details/122852616</link><guid>https://blog.youkuaiyun.com/m0_53373033/article/details/122852616</guid><author>m0_53373033</author><pubDate>Thu, 10 Feb 2022 00:47:03 +0800</pubDate><description><![CDATA[2022年02月10日，第二十天

1. 题目链接：P4219 [BJOI2014]大融合
思路：LCTLCTLCT 解决，时间复杂度 O(nlog&nbsp;n)O(nlog\ n)O(nlog&nbsp;n) 。LCTLCTLCT 维护子树信息的模板题。总所周知，LCTLCTLCT 的实边形成的实链是用来维护树链信息的，除了实边之外，还存在着一种虚边，我们定义以下两个数组：

isum[i]isum[i]isum[i] ，表示第 iii 个结点所有虚边连向的结点 jjj 的子树的结点隔宿；
siz[i.]]></description><category></category></item><item><title><![CDATA[Link Cut Tree 应用四]]></title><link>https://blog.youkuaiyun.com/m0_53373033/article/details/122833020</link><guid>https://blog.youkuaiyun.com/m0_53373033/article/details/122833020</guid><author>m0_53373033</author><pubDate>Tue, 08 Feb 2022 23:01:06 +0800</pubDate><description><![CDATA[2022年02月08日，第十八天

1. 题目链接：P4234 最小差值生成树
思路：LCTLCTLCT 加并查集解决，时间复杂度 O(nlog&nbsp;n)O(nlog\ n)O(nlog&nbsp;n) 。Warning！！！Warning！！！Warning！！！ 这题有自环，搞得自闭了 QAQQAQQAQ。我们利用双指针的思想，求解最大值与最小值差值的最小值，当固定好了最大值，我们尽可能让最小值更大，这样差值就会变小，基于这个原则，我们枚举每一个最大值，换句话说，我们将边权排序，按边权从小到大枚.]]></description><category></category></item><item><title><![CDATA[Link Cut Tree 应用三]]></title><link>https://blog.youkuaiyun.com/m0_53373033/article/details/122803141</link><guid>https://blog.youkuaiyun.com/m0_53373033/article/details/122803141</guid><author>m0_53373033</author><pubDate>Sun, 06 Feb 2022 23:41:59 +0800</pubDate><description><![CDATA[2022年02月06日，第十七天

1. 题目链接：P2542 [AHOI2005] 航线规划
思路：LCTLCTLCT 加并查集解决，时间复杂度 O(nlog&nbsp;n)O(nlog\ n)O(nlog&nbsp;n) 。我们发现正序删边是不好来维护连通性的，基于正难则反原则，我们可以离线处理，逆序完成操作。显然，每个点可以代表一个双连通分量，查询就是链的长度减一，也就是桥的数量。连接一条边，如果在 LCTLCTLCT 中还没连通就 linklinklink ，如果连通了，这里会出现一个环，然后我们.]]></description><category></category></item><item><title><![CDATA[Link Cut Tree 应用二]]></title><link>https://blog.youkuaiyun.com/m0_53373033/article/details/122788696</link><guid>https://blog.youkuaiyun.com/m0_53373033/article/details/122788696</guid><author>m0_53373033</author><pubDate>Sat, 05 Feb 2022 10:58:39 +0800</pubDate><description><![CDATA[2022年02月04日，第十六天

1. 题目链接：P2147 [SDOI2008] 洞穴勘测
思路：LCTLCTLCT 在线解决，时间复杂度 O(mlog&nbsp;n)O(mlog\ n)O(mlog&nbsp;n) ，常数巨大。模板题，不必多言。
#include &lt;bits/stdc++.h&gt;
#define ull unsigned long long
#define ll long long
#define re register
#define endl '\n'

using .]]></description><category></category></item><item><title><![CDATA[Link Cut Tree 应用一]]></title><link>https://blog.youkuaiyun.com/m0_53373033/article/details/122779108</link><guid>https://blog.youkuaiyun.com/m0_53373033/article/details/122779108</guid><author>m0_53373033</author><pubDate>Thu, 03 Feb 2022 21:41:30 +0800</pubDate><description><![CDATA[2022年02月03日，第十五天

1. 题目链接：P3203 [HNOI2010]弹飞绵羊
思路1：LCTLCTLCT 解决，时间复杂度 O(nlog&nbsp;n)O(nlog\ n)O(nlog&nbsp;n) ，常数巨大。已知题目的所有操作都与结点编号相关，我们将一个点 uuu 跳到另一个点 u+ku+ku+k 连一条边，表示被弹一次，由于弹出 nnn 号点即为弹飞，我们设 u+ku+ku+k 大于 nnn ，都为到 n+1n+1n+1 号点。这样我们 split(u,n+1)split (u, .]]></description><category></category></item><item><title><![CDATA[初识动态树—— Link Cut Tree]]></title><link>https://blog.youkuaiyun.com/m0_53373033/article/details/122766359</link><guid>https://blog.youkuaiyun.com/m0_53373033/article/details/122766359</guid><author>m0_53373033</author><pubDate>Tue, 01 Feb 2022 21:35:06 +0800</pubDate><description><![CDATA[2022年02月01日，第十四天

前言：以下笔记是参考博客：LCT总结——概念篇 （侵删）
一、概念性质
链剖分，是指一类对树的边进行轻重划分的操作，这样做的目的是为了减少某些链上的修改、查询等操作的复杂度。目前总共有三类：重链剖分，实链剖分和不常见的长链剖分。

重链剖分，实际上我们经常讲到树剖，就是重链剖分的常用称呼。对于每个点，选择最大的子树，将这条边划分为重边，而连向其它子树的边划分为轻边。若干重边连接在一起构成重链，用树状数组或线段树等数据结构维护。
实链剖分，同样将某一个儿子的连边划分为实边.]]></description><category></category></item><item><title><![CDATA[树链剖分——轻重链剖分]]></title><link>https://blog.youkuaiyun.com/m0_53373033/article/details/122725914</link><guid>https://blog.youkuaiyun.com/m0_53373033/article/details/122725914</guid><author>m0_53373033</author><pubDate>Fri, 28 Jan 2022 01:05:30 +0800</pubDate><description><![CDATA[2022年01月27日，第十三天

1. 题目链接：P3384 【模板】轻重链剖分/树链剖分
思路：树链剖分直接搞，时间复杂度为 O(nlog2n)O(nlog^2n)O(nlog2n) ，通过模板题，我们可以了解到，树链剖分是用来划分树的路径的一个有效工具，它把任意两点之间的简单路径划分成 O(log&nbsp;n)O(log\ n)O(log&nbsp;n) 段线性区间，当我们得到 dfsdfsdfs 序之后套上线段树时，能够轻松地维护树上的某条链的信息。细节看代码注释。
#include &lt;b.]]></description><category></category></item><item><title><![CDATA[后缀系列例题五]]></title><link>https://blog.youkuaiyun.com/m0_53373033/article/details/122710626</link><guid>https://blog.youkuaiyun.com/m0_53373033/article/details/122710626</guid><author>m0_53373033</author><pubDate>Wed, 26 Jan 2022 23:59:22 +0800</pubDate><description><![CDATA[2022年01月26日，第十二天

后缀系列例题五
1. 题目链接：P3181 [HAOI2016]找相同字符
思路1：后缀数组加容斥原理解决，时间复杂度 O(nlog&nbsp;n)O(nlog\ n)O(nlog&nbsp;n) ，首先我们将问题转化，所有相同子串的对数，相当于所有来自不同字符串后缀的 LCPLCPLCP 之和，这是为什么呢，其实是可以看成固定 LCPLCPLCP 的第一个字符，让后面的字符不断连接上去构成若干新方案，而这个方案数量就是 LCPLCPLCP 的长度。
我们考虑构建后缀数.]]></description><category></category></item><item><title><![CDATA[后缀系列例题四]]></title><link>https://blog.youkuaiyun.com/m0_53373033/article/details/122693990</link><guid>https://blog.youkuaiyun.com/m0_53373033/article/details/122693990</guid><author>m0_53373033</author><pubDate>Tue, 25 Jan 2022 23:48:04 +0800</pubDate><description><![CDATA[2022年01月25日，第十一天

1. 题目链接：SP7258 SUBLEX - Lexicographical Substring Search
思路：后缀自动机解决，时间复杂度 O(nT)O(nT)O(nT) ，根据后缀自动机从源点出发得到每个状态都是原串的子串，且不重不漏，那么我们先建出 SAMSAMSAM ，然后在拓扑序上 dpdpdp 出每个点的路径数，然后统计答案时就在自动机上 dfsdfsdfs ，类似平衡树找第 kkk 小那样做。
#include &lt;bits/stdc++.h&g.]]></description><category></category></item><item><title><![CDATA[后缀系列例题三]]></title><link>https://blog.youkuaiyun.com/m0_53373033/article/details/122676046</link><guid>https://blog.youkuaiyun.com/m0_53373033/article/details/122676046</guid><author>m0_53373033</author><pubDate>Mon, 24 Jan 2022 22:06:31 +0800</pubDate><description><![CDATA[2022年01月24日，第十天

1. 题目链接：P3763 [TJOI2017]DNA
Amazing！！！Amazing！！！Amazing！！！ 这题居然有四种思路解决。
思路1：多项式解决，时间复杂度 O(nlog&nbsp;n)O(nlog\ n)O(nlog&nbsp;n)，总共跑了 121212 次 FFTFFTFFT ，常数过大，开 O2O2O2 才 ACACAC。由于 DNADNADNA 序列最多有 444 种不同的字符，我们可以考虑如下做法，分别考虑每一个字符 ccc ，对于两个串 s.]]></description><category></category></item><item><title><![CDATA[后缀系列例题二]]></title><link>https://blog.youkuaiyun.com/m0_53373033/article/details/122658950</link><guid>https://blog.youkuaiyun.com/m0_53373033/article/details/122658950</guid><author>m0_53373033</author><pubDate>Sun, 23 Jan 2022 22:56:42 +0800</pubDate><description><![CDATA[2022年01月23日，第九天

后缀系列例题二
1. 题目链接：P4051 [JSOI2007]字符加密
思路：此题涉及到字符串排序，因此我们很容易能想到用 SASASA ，将原串拷贝一份到后面，这样原串长度变为原来两倍，直接上后缀数组按题目要求输出答案即可。
#include &lt;bits/stdc++.h&gt;
#define ull unsigned long long
#define ll long long
#define re register
#define endl '\n'

u.]]></description><category></category></item><item><title><![CDATA[后缀系列例题一]]></title><link>https://blog.youkuaiyun.com/m0_53373033/article/details/122645653</link><guid>https://blog.youkuaiyun.com/m0_53373033/article/details/122645653</guid><author>m0_53373033</author><pubDate>Sat, 22 Jan 2022 23:14:22 +0800</pubDate><description><![CDATA[2022年01月22日，第八天

后缀系列模板题
借一张后缀自动机经典图片镇镇楼……

1. 题目链接：P3804 【模板】后缀自动机 (SAM)
思路：直接上 SAMSAMSAM ，然后做个基数排序倒序遍历求和即可，本质是作后缀树（后缀链接反向即是）的前缀和。换句话说，我们也可以建后缀链接的反向边求树上前缀和，再计算贡献。
#include &lt;bits/stdc++.h&gt;
#define ull unsigned long long
#define ll long long
#define .]]></description><category></category></item><item><title><![CDATA[初识SAM——后缀自动机]]></title><link>https://blog.youkuaiyun.com/m0_53373033/article/details/122611693</link><guid>https://blog.youkuaiyun.com/m0_53373033/article/details/122611693</guid><author>m0_53373033</author><pubDate>Thu, 20 Jan 2022 22:47:48 +0800</pubDate><description><![CDATA[2022年01月20日，第七天

后缀自动机（SAM）
后缀自动机 是一个能解决许多字符串相关问题的有力数据结构。
以下的字符串问题都可以在线性的时间复杂度内通过 SAMSAMSAM 解决。

在另一个字符串中搜索一个字符串的所有出现位置。
计算给定的字符串中有多少个不同的子串。

直观上，字符串的 SAMSAMSAM 可以理解为给定字符串的所有子串的压缩形式。
一些保证线性的性质：

对于一个长度为 nnn 的字符串 sss ，它的 SAMSAMSAM 中的 状态数 不会超过 2n−12n - 12n−.]]></description><category></category></item><item><title><![CDATA[平衡树例题]]></title><link>https://blog.youkuaiyun.com/m0_53373033/article/details/122592392</link><guid>https://blog.youkuaiyun.com/m0_53373033/article/details/122592392</guid><author>m0_53373033</author><pubDate>Wed, 19 Jan 2022 23:47:04 +0800</pubDate><description><![CDATA[2022年01月19日，第六天

平衡树若干练习……
1. 题目链接：P3224 [HNOI2012]永无乡
下面提供两种思路，第一种的时间复杂度是 O(n&nbsp;logn)O(n\ log n)O(n&nbsp;logn) ，第二种的时间复杂度是 O(n&nbsp;log2n)O(n\ log^2n)O(n&nbsp;log2n) ，本来两种算法的时间复杂度有挺大差异，但跑起来效率差不多，可能线段树合并常数稍大。
思路一：权值线段树合并直接搞
#include &lt;bits/stdc++.h&g.]]></description><category></category></item><item><title><![CDATA[C-Shuffle Cards平衡树]]></title><link>https://blog.youkuaiyun.com/m0_53373033/article/details/122570679</link><guid>https://blog.youkuaiyun.com/m0_53373033/article/details/122570679</guid><author>m0_53373033</author><pubDate>Tue, 18 Jan 2022 22:53:42 +0800</pubDate><description><![CDATA[2022年01月18日，第五天

题目链接：C-Shuffle Cards_2021牛客国庆集训派对day3
学了几个平衡树回去翻了翻国庆积分赛的题，发现原来就是模板题，只能说自己学太少了QWQ。
下面提供三个思路，并且了解了平衡树实际上是用来维护树的中序遍历。
思路一：使用 FHQ&nbsp;treapFHQ\ treapFHQ&nbsp;treap 直接移动区间
#include &lt;bits/stdc++.h&gt;
#define ll long long

using namespace s.]]></description><category></category></item><item><title><![CDATA[平衡树之 Splay 伸展树]]></title><link>https://blog.youkuaiyun.com/m0_53373033/article/details/122550388</link><guid>https://blog.youkuaiyun.com/m0_53373033/article/details/122550388</guid><author>m0_53373033</author><pubDate>Mon, 17 Jan 2022 22:52:31 +0800</pubDate><description><![CDATA[2022年01月17日，第四天

五. 平衡树—— SplaySplaySplay 伸展树
伸展树之所以叫做伸展树，是因为其核心操作是伸展 (splaying)(splaying)(splaying)  。伸展就是把一个结点通过 旋转 调整到某个结点处，一般都是伸展到根结点。
旋转就是 AVLAVLAVL 树中的左旋和右旋，不过在这里似乎有了更高级的名字：左旋 (ZAG)(ZAG)(ZAG) 和右旋 (ZIG)(ZIG)(ZIG) 。
伸展树非常灵活，可以用它完成许多别的操作，诸如分裂，合并，区间操作，搞.]]></description><category></category></item><item><title><![CDATA[平衡树之文艺平衡树（维护区间）]]></title><link>https://blog.youkuaiyun.com/m0_53373033/article/details/122530065</link><guid>https://blog.youkuaiyun.com/m0_53373033/article/details/122530065</guid><author>m0_53373033</author><pubDate>Sun, 16 Jan 2022 22:16:31 +0800</pubDate><description><![CDATA[2022年01月16日  第三天

平衡树——文艺平衡树（维护区间）
首先我们需要知道如何用 fhq&nbsp;Treapfhq\ Treapfhq&nbsp;Treap 来实现区间操作
例如，要操作的区间为 [l,&nbsp;r][l,\ r][l,&nbsp;r] ，那么我们就在 fhq&nbsp;Treapfhq\ Treapfhq&nbsp;Treap 里把这一段直接 splitsplitsplit 拆出来进行操作然后再合并回去。按大小分裂：把树拆成两颗树，其中一颗树的大小等于给定的大小，剩余部分.]]></description><category></category></item></channel></rss>