<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[hzk_cpp的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/hzk_cpp</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; hzk_cpp]]></copyright><item><title><![CDATA[【原创题】鸽子的序列题解（线段树+整体二分+树状数组）]]></title><link>https://blog.youkuaiyun.com/hzk_cpp/article/details/90446442</link><guid>https://blog.youkuaiyun.com/hzk_cpp/article/details/90446442</guid><author>hzk_cpp</author><pubDate>Wed, 06 Jan 2021 07:53:32 +0800</pubDate><description><![CDATA[题目：[luoguU71972](https://www.luogu.org/problemnew/show/U71972).
题目大意：给定一个长度为$n$的序列，要求支持$m$次操作：
1.格式$1\,l,\,r\,k$，表示修改区间$[l,r]$内的所有数变为$k$.
2.格式$2\,l,\,r\,k$，表示查询区间$[l,r]$内第$k$大的数.
$1\leq n,m\leq 10^5$.]]></description><category></category></item><item><title><![CDATA[关于blog搬迁]]></title><link>https://blog.youkuaiyun.com/hzk_cpp/article/details/108540122</link><guid>https://blog.youkuaiyun.com/hzk_cpp/article/details/108540122</guid><author>hzk_cpp</author><pubDate>Fri, 11 Sep 2020 19:05:40 +0800</pubDate><description><![CDATA[csdn体验越来越差，准备搬去洛谷了.
洛谷blog地址.
至于原来的blog，或许会搬一部分吧.

]]></description><category></category></item><item><title><![CDATA[最大流最小割定理与最小割的数学模型]]></title><link>https://blog.youkuaiyun.com/hzk_cpp/article/details/86149204</link><guid>https://blog.youkuaiyun.com/hzk_cpp/article/details/86149204</guid><author>hzk_cpp</author><pubDate>Sat, 18 Jul 2020 07:50:13 +0800</pubDate><description><![CDATA[一.最大流最小割定理.
割：对于一张网络，我们称一个边集的子集为一个割，当且仅当去掉这个边集的子集后源点SSS无法到达汇点TTT.
最小割：边权和最小的割被称为最小割.
最大流-最小割定理：一张网络的最大流等于其最小割的边权之和.
这个东西太经典了这里就不证了.


二.最小割的可行边与必经边.
显然一张网络可能有不止一个最小割，那么我们如何确定一条边是最小割的可行边或者必经边？
首先考虑对网络跑一遍最大流，此时我们会得到一张残余网络（算上反向边）.
首先，容易发现如果一条边没有满流，那么这条边必然不是任意]]></description><category></category></item><item><title><![CDATA[基础网络流与上下界网络流]]></title><link>https://blog.youkuaiyun.com/hzk_cpp/article/details/107304261</link><guid>https://blog.youkuaiyun.com/hzk_cpp/article/details/107304261</guid><author>hzk_cpp</author><pubDate>Sun, 12 Jul 2020 21:27:32 +0800</pubDate><description><![CDATA[一些简单的说明.
基本的东西都烂大街了，这里大概会写一些不那么基本的东西，所以想学基本网络流的就不用看了.


一.网络流基本概念.
（无源汇）网络：网络是一张图G=(V,E)G=(V,E)G=(V,E)，每条边(x,y)∈E(x,y)\in E(x,y)∈E都有一个流量上限f(x,y)f(x,y)f(x,y).
流函数：一个流函数是一个定义在网络G=(V,E)G=(V,E)G=(V,E)的边上的实值函数F(x,y)F(x,y)F(x,y)，满足：
容量限制：对于任意(x,y)∈E(x,y)\in E(x,]]></description><category></category></item><item><title><![CDATA[ZJOI2020游记]]></title><link>https://blog.youkuaiyun.com/hzk_cpp/article/details/106886044</link><guid>https://blog.youkuaiyun.com/hzk_cpp/article/details/106886044</guid><author>hzk_cpp</author><pubDate>Mon, 22 Jun 2020 13:02:36 +0800</pubDate><description><![CDATA[Day2020.6.19
冒着倾盆大雨到达宾馆，为什么省选要选在一个下暴雨的日子啊.
到宾馆后睡了一会，然后开始复习根本复习不完的板子.

]]></description><category></category></item><item><title><![CDATA[各类多项式操作的暴力递推法]]></title><link>https://blog.youkuaiyun.com/hzk_cpp/article/details/101018652</link><guid>https://blog.youkuaiyun.com/hzk_cpp/article/details/101018652</guid><author>hzk_cpp</author><pubDate>Wed, 03 Jun 2020 21:09:27 +0800</pubDate><description><![CDATA[一.一些约定.
对于接下来的所有操作，我们都是给出F(x)F(x)F(x)，求G(x)=T(F(x))G(x)=T(F(x))G(x)=T(F(x))，其中T()T()T()是操作函数，我们的目标是在O(n2)O(n^{2})O(n2)的时间复杂度内完成所有操作.
多项式F(x),G(x)F(x),G(x)F(x),G(x)的系数分别为fi,gif_i,g_ifi​,gi​.


二.多项式求逆.
对于一个多项式F(x)F(x)F(x)，我们要求G(x)G(x)G(x)满足F(x)G(x)=1F(x)G(x]]></description><category></category></item><item><title><![CDATA[行列式与矩阵树定理入门]]></title><link>https://blog.youkuaiyun.com/hzk_cpp/article/details/86742501</link><guid>https://blog.youkuaiyun.com/hzk_cpp/article/details/86742501</guid><author>hzk_cpp</author><pubDate>Mon, 01 Jun 2020 13:54:34 +0800</pubDate><description><![CDATA[一.行列式及其初等变换.
行列式：行列式是一个定义域为矩阵，值域为数值的函数，记为∣A∣|A|∣A∣或det⁡A\det AdetA，定义式如下：
∣A∣=det⁡A=∑p(−1)C(p)∏i=1nAi,pi
|A|=\det A=\sum_{p}(-1)^{C(p)}\prod_{i=1}^{n}A_{i,p_i}
∣A∣=detA=p∑​(−1)C(p)i=1∏n​Ai,pi​​
设AAA的长度为nnn，则ppp是一个长度为nnn的排列，C(p)C(p)C(p)表示排列ppp中的逆序对数.
定理1.1：]]></description><category></category></item><item><title><![CDATA[生成函数多项式操作合集]]></title><link>https://blog.youkuaiyun.com/hzk_cpp/article/details/87020909</link><guid>https://blog.youkuaiyun.com/hzk_cpp/article/details/87020909</guid><author>hzk_cpp</author><pubDate>Mon, 23 Mar 2020 20:24:05 +0800</pubDate><description><![CDATA[一.生成函数与多项式乘法.
众所周知，生成函数是OI中的计数利器，而很多生成函数的题目需要快速计算式子中的多项式运算，所以本篇主要是介绍多项式运算的.
值得注意的是，这里很多奇怪的多项式运算本来是不存在模xnx^nxn意义下的定义的，但是由于生成函数是形式幂级数，所以直接取泰勒展开后的结果就是了.
多项式乘法作为最基础的多项式运算，这里不再介绍，具体参见快速傅里叶变换FFT与快速数论变换NTT入门...]]></description><category></category></item><item><title><![CDATA[分治FFT与多项式点值插值]]></title><link>https://blog.youkuaiyun.com/hzk_cpp/article/details/89920269</link><guid>https://blog.youkuaiyun.com/hzk_cpp/article/details/89920269</guid><author>hzk_cpp</author><pubDate>Thu, 19 Mar 2020 19:32:38 +0800</pubDate><description><![CDATA[一.多项式乘法.
作为最基础的多项式运算，这里不再介绍，具体参见快速傅里叶变换FFT与快速数论变换NTT入门.
这里的多项式乘法卡常技巧不会过于深入，且只适用于FFT.


二.分治FFT.
分治FFT其实并不是一个算法，它只是分治里面用FFT处理信息，不过这个东西有一些经典的模型.
比如给定gig_igi​，要求：
fi=∑j=1ifi−jgj
f_i=\sum_{j=1}^{i}f_{i-j}...]]></description><category></category></item><item><title><![CDATA[多项式乘法卡常技巧与任意模数NTT]]></title><link>https://blog.youkuaiyun.com/hzk_cpp/article/details/89971544</link><guid>https://blog.youkuaiyun.com/hzk_cpp/article/details/89971544</guid><author>hzk_cpp</author><pubDate>Wed, 18 Mar 2020 14:09:25 +0800</pubDate><description><![CDATA[一.普通多项式乘法.
作为最基础的多项式运算，这里不再介绍，具体参见快速傅里叶变换FFT与快速数论变换NTT入门.
这里的多项式乘法卡常技巧不会过于深入，且只适用于FFT.


二.多项式乘法优化1.
这是一种非常简单的多项式乘法常数优化，对于两个系数为实数的多项式A(x),B(x)A(x),B(x)A(x),B(x)，我们写成一个多项式P(x)P(x)P(x)：
P(x)=A(x)+iB(x)
...]]></description><category></category></item><item><title><![CDATA[拉格朗日插值相关]]></title><link>https://blog.youkuaiyun.com/hzk_cpp/article/details/104557607</link><guid>https://blog.youkuaiyun.com/hzk_cpp/article/details/104557607</guid><author>hzk_cpp</author><pubDate>Fri, 28 Feb 2020 17:22:08 +0800</pubDate><description><![CDATA[一.插值的定义.
插值：给定若干个点(xi,yi)(x_i,y_i)(xi​,yi​)，确定一条函数曲线f(x)f(x)f(x)满足对于所有iii，有f(xi)=yif(x_i)=y_if(xi​)=yi​的过程称为插值.
多项式插值：给定n+1n+1n+1个xix_ixi​两两不同的点(xi,yi)(x_i,y_i)(xi​,yi​)，确定一个多项式f(x)=∑i=0naixif(x)=\sum...]]></description><category></category></item><item><title><![CDATA[各类平衡树的学习（零）——二叉搜索树BST]]></title><link>https://blog.youkuaiyun.com/hzk_cpp/article/details/90083793</link><guid>https://blog.youkuaiyun.com/hzk_cpp/article/details/90083793</guid><author>hzk_cpp</author><pubDate>Fri, 28 Feb 2020 15:39:30 +0800</pubDate><description><![CDATA[一.一道模板题.
题目：BZOJ3224.
题目大意：在序列上维护一个数据结构支持：
1.插入数xxx.
2.删除数xxx（只删一个）.
3.查找xxx的最小排名.
4.查找排名为xxx的数.
5.查找xxx的前驱.
6.查找xxx的后继.
1≤n≤1051\leq n\leq 10^51≤n≤105.
这种题目一般都会用平衡树这种数据结构来维护，而所有平衡树都得基于二叉搜索树BST，所以这篇文章...]]></description><category></category></item><item><title><![CDATA[各类平衡树的学习（一）——Splay]]></title><link>https://blog.youkuaiyun.com/hzk_cpp/article/details/87275662</link><guid>https://blog.youkuaiyun.com/hzk_cpp/article/details/87275662</guid><author>hzk_cpp</author><pubDate>Fri, 28 Feb 2020 15:39:23 +0800</pubDate><description><![CDATA[一.一道模板题.
题目：loj104.
题目大意：在序列上维护一个数据结构支持：
1.插入数xxx.
2.删除数xxx（只删一个）.
3.查找xxx的最小排名.
4.查找排名为xxx的数.
5.查找xxx的前驱.
6.查找xxx的后继.
这种裸题一般都会卡掉一般的二叉查找树，所以我们现在需要用到平衡树来维护.
平衡树就是利用一些机制，使得每一次的操作效率是O(log⁡n)O(\log n)O(lo...]]></description><category></category></item><item><title><![CDATA[各类平衡树的学习（二）——Treap]]></title><link>https://blog.youkuaiyun.com/hzk_cpp/article/details/90083777</link><guid>https://blog.youkuaiyun.com/hzk_cpp/article/details/90083777</guid><author>hzk_cpp</author><pubDate>Fri, 28 Feb 2020 15:39:18 +0800</pubDate><description><![CDATA[一.一道模板题.
题目：BZOJ3224.
题目大意：在序列上维护一个数据结构支持：
1.插入数xxx.
2.删除数xxx（只删一个）.
3.查找xxx的最小排名.
4.查找排名为xxx的数.
5.查找xxx的前驱.
6.查找xxx的后继.
1≤n≤1051\leq n\leq 10^51≤n≤105.
在各类平衡树的学习（一）——Splay中，我们用splay解决了这个问题，接下来我们将会用另一...]]></description><category></category></item><item><title><![CDATA[分治法求平面最近点对入门]]></title><link>https://blog.youkuaiyun.com/hzk_cpp/article/details/90380481</link><guid>https://blog.youkuaiyun.com/hzk_cpp/article/details/90380481</guid><author>hzk_cpp</author><pubDate>Fri, 28 Feb 2020 15:39:12 +0800</pubDate><description><![CDATA[一.平面最近点对问题.
平面最近点对：在一个平面上有nnn个点，求出距离最近的两个点.
平面最近点对是计算几何中一个十分经典且基础的问题，通常采用分治法来解决.


二.直线最近点对的分治法.
在用分治法解决平面最近点对之前，我们用分治法来解决一下直线最近点对问题.
考虑在一条直线上暴力枚举两个点并计算距离取最小，很明先复杂度是O(n2)O(n^2)O(n2)的，比较慢.
于是我们考虑先给nnn的...]]></description><category></category></item><item><title><![CDATA[快速傅里叶变换FFT与快速数论变换NTT入门]]></title><link>https://blog.youkuaiyun.com/hzk_cpp/article/details/88357945</link><guid>https://blog.youkuaiyun.com/hzk_cpp/article/details/88357945</guid><author>hzk_cpp</author><pubDate>Fri, 28 Feb 2020 15:39:02 +0800</pubDate><description><![CDATA[一.FFT引入.
离散傅里叶变换DFT，是一种用于将多项式从系数表示转化为点值表示的多项式变换.
快速傅里叶变换FFT，是一种O(nlog⁡n)O(n\log n)O(nlogn)的傅里叶变换，在OI中占有重要地位，主要用与优化卷积过程.
卷积，即给定ai,bia_i,b_iai​,bi​，求ci=∑i=0naibn−ic_i=\sum_{i=0}^{n}a_ib_{n-i}ci​=∑i=0n​a...]]></description><category></category></item><item><title><![CDATA[最大流及其增广路算法入门（Emonds-Karp & Dinic & ISAP）]]></title><link>https://blog.youkuaiyun.com/hzk_cpp/article/details/94437566</link><guid>https://blog.youkuaiyun.com/hzk_cpp/article/details/94437566</guid><author>hzk_cpp</author><pubDate>Fri, 28 Feb 2020 15:38:09 +0800</pubDate><description><![CDATA[**一.最大流的定义.**

**网络**：我们称一张带权有向图$G=\{V,E\}$为网络，当且仅当这张有向图中有两个特殊点$s,t$，其中$s$称为原点，$t$称为汇点.

**容量**：在一张网络上某条边$(x,y)$的边权称之为这条边的容量，这里记为$c(x,y)$.

**流函数**：对于每条边有一个函数$f(x,y)\leq c(x,y)$，我们称$f$为流函数.

**流量守恒**：对于每一个点$x=\not{}s$且$x=\not{}t$，流函数必须满足：
$$
\sum_{(i,x)\in]]></description><category></category></item><item><title><![CDATA[竞赛图（有向完全图）上哈密顿路径的若干性质（BZOJ4727 [POI2017]Turysta 题解）]]></title><link>https://blog.youkuaiyun.com/hzk_cpp/article/details/94895213</link><guid>https://blog.youkuaiyun.com/hzk_cpp/article/details/94895213</guid><author>hzk_cpp</author><pubDate>Fri, 28 Feb 2020 15:37:43 +0800</pubDate><description><![CDATA[一.竞赛图与哈密顿路径的定义.
竞赛图：竞赛图是一张有向无环图G={V,E}G=\{V,E\}G={V,E}，满足有∣E∣=∣V∣(∣V∣−1)|E|=|V|(|V|-1)∣E∣=∣V∣(∣V∣−1)边且两点之间仅有一条边，也就是说两点之间有且仅有一条边.
哈密顿路径：一条经过nnn个点的简单路径，即不能重复经过一个点.
哈密顿回路：一条哈密顿回路相当于一条哈密顿路径的终点与起点也通过一条边连起来...]]></description><category></category></item><item><title><![CDATA[AC自动机入门详解]]></title><link>https://blog.youkuaiyun.com/hzk_cpp/article/details/86015142</link><guid>https://blog.youkuaiyun.com/hzk_cpp/article/details/86015142</guid><author>hzk_cpp</author><pubDate>Fri, 28 Feb 2020 15:37:33 +0800</pubDate><description><![CDATA[一.AC自动机的引入.
我们都知道KMP可以用来一个子串与母串之间的匹配，只需要通过一个next指针就可以实现O(n+m)匹配，已经达到了算法下界，是一个很优秀的算法了.
但是我们如何考虑多个子串与母串之间的匹配呢？
如果多个子串与母串之间的匹配用KMP来实现，效率可能就不那么高了，这可怎么办呢？这就是AC自动机的由来.
AC自动机是什么？其实就是在Trie树上跑KMP.


二.Trie树与KM...]]></description><category></category></item><item><title><![CDATA[斜率优化DP入门（BZOJ1010 玩具装箱题解）]]></title><link>https://blog.youkuaiyun.com/hzk_cpp/article/details/87894914</link><guid>https://blog.youkuaiyun.com/hzk_cpp/article/details/87894914</guid><author>hzk_cpp</author><pubDate>Fri, 28 Feb 2020 15:36:26 +0800</pubDate><description><![CDATA[一.斜率优化的 作用.
斜率优化主要针对这样一类方程进行优化：
f[i]=ai+min⁡j=0i−1{f[j]+bj+ci∗dj}
f[i]=a_i+\min_{j=0}^{i-1}\{ f[j]+b_j+c_i*d_j \}
f[i]=ai​+j=0mini−1​{f[j]+bj​+ci​∗dj​}
其中min⁡\minmin也可以换成max⁡\maxmax，ai,bi,ci,dia_i,b_i...]]></description><category></category></item></channel></rss>