随笔分类 - 题解
摘要:总览 假设现在有一个点分治可以做的题,但是因为被强制在线(带修或者其他原因)。显然有一种做法是每询问一次就点分一次,时间复杂度是$O(mn\log n)$,是一个并不太优秀的做法。 考虑到每次点分治都需要重新找一次重心以及统计信息等等,而事实上由于树的形态并不会改变,也就是说重心其实是并不会变化的。
阅读全文
摘要:主席树在线维护区间不同数的个数 考虑一个序列${a_1,a_2,a_3,...,a_n}$,对于其中一个元素$a_i$,假定下一个和它相同的数是$a_j$,不难发现对于右端点大于$j$的区间,若这两个数对答案产生贡献,则贡献一定来自于$a_j$。 原因如下: 对于同时包含两个数的区间,我们可以认为在
阅读全文
摘要:Luogu P4568 飞行路线 众所周知,对于经典的最短路问题,我们可以使用各类算法来解决。 但是对于这道题,我们可以选取某些边,改变它的权值。 显而易见的一点就是直接套用SPFA或者Dijkstra并不能解决这个问题。 这时候我们引入一个叫做分层图的东西。 把每一个点复制$k$次,形成$k$层的
阅读全文
摘要:【Luogu P3806】点分治 点分治主要用于解决无根树上的一些路径统计问题。 点分治的基本步骤: 选定一个点作为根,把路径分为两类,一类是经过是根节点的,另一类是不经过根节点的。 dfs处理处这一棵路径的信息。 运用某些方法(双指针,树状数组,桶)等统计方法,确认答案。 删除根节点,对子树重复进
阅读全文
摘要:"Luogu P6185 NOI Online 1 冒泡排序" 首先定义$f(i)$表示序列中$i$位置前有多少个比他大的数。 根据冒泡排序的过程很容易发现一些$f(i)$的特点: + 每经过一轮冒泡排序,由$f(i)$构成的序列就会整体减一并且向左移动一位。 + 已经为$0$的$f(i)$不会发生
阅读全文
摘要:"Luogu P6185 NOI Online 1 序列" 将其转化为图论题。 定义:$u,v$为$a_i$所代表的点 $u',v'$为$b_i$所代表的点 对于操作$2$,将其视为一种权值搬运的操作,从$u$到$v$或者反过来转移点权。那么我们对$u,v$和$u',v'$连一条无向边,显然对于一个
阅读全文
摘要:题意:统计DAG上每一个点可以到达的所有节点的权值和(包括自己)。 思路如下:根据题意可以得到这样的关系:设$rec(x)$为$x$点可达点的集合,假设存在一条有向边$(x,y)$,有$rec(x)=rec(x)\cup rec(y)$。显然集合$rec(x)$的初始状态为$\{x\}$(可以抵达自
阅读全文
摘要:"P1833" 根据题意,可以发现这是一个背包模型。但是它和01背包、完全背包不同之处在于有些树的选取有次数限制,有的却没有。 一个很容易想到的思路就是直接暴力地把所有$p_i$次限制的树视为01背包,外加一维选取个数的循环。剩下无限制的物品直接用完全背包来做。 这个思路很好实现,看上去也是非常完美
阅读全文
摘要:"Luogu P2765" 一开始看到这道题完全想不到怎么做,绞尽脑汁也想不到怎么去构造这个网络流模型。 于是查看了多篇题解……学习了多篇题解的讲解,终于找到了思路。 本文参考了洛谷 这一道题的题意并不难理解,难就难在如何去构造模型。 显然有一个贪心策略,就是尽可能地放在已经放置过球的柱子上,尽可能
阅读全文
摘要:"Luogu P1345" 很容易发现这题要求的是网络流中的最小割。 关于最小割,我们有最大流最小割定理:最小割的容量一定等于最大流的流量 但是这个定理是用于求最小割边,而题目要求我们求的是最小割点。 那么这两个问题之间如何转化呢? 我们考虑把节点$p$拆成节点$p$和节点$p+n$,入边连接到$p
阅读全文
摘要:"Luogu P3258" 题意就是对于一棵树,要求按照给出的顺序对每一个节点进行访问,记录每一个节点被经过的次数;特别地,我们认为只有从一个节点往外走才能被认为是经过一次。(最后一句话非常重要,仔细理解题意) 前置知识:树链剖分,差分。 最开始看到这道题我是打算使用树链剖分+线段树来做的。 但是我
阅读全文
摘要:"Luogu P3376" 由于$EK$算法求最大流时每一次只求一条增广路,时间复杂度会比较高。尽管实际应用中表现比较优秀,但是有一些题目还是无法通过。 那么我们就会使用$Dinic$算法实现多路增广。 算法的基本流程如下: 1. $BFS$对图进行分层,求出终点所在的层数 2. $DFS$对每一条
阅读全文
摘要:数组是一种单点修改,单点查询的基础数据结构。 如果要对数组改进,使之可持久化,那么显然我们需要利用其它的数据结构来改进它。 对于单点修改和单点查询两种操作,很容易发现可持久化线段树也是支持这种操作的。 所以,我们利用可持久化线段树来维护一个可持久化数组
阅读全文
摘要:"Luogu P3376" 最大流是网络流模型的一个基础问题。 网络流模型就是一种特殊的有向图。 概念: 源点:提供流的节点,类比成为一个无限放水的水厂 汇点:接受流的节点,类比成为一个无限收水的小区 弧:类比为水管 弧的容量:类比为水管的容量;用函数$c(x,y)$表示弧$(x,y)$的容量 弧的
阅读全文
摘要:"Luogu P1265" 本来一开始我用的Kruskal……但是由于double类型8字节,所以MLE了。 很容易发现这是一道最小生成树的题目。 值得注意的是题目中给的第二个限制,只存在唯一情况即这个环为等边多边形。 但是如果是等边多边形那么这个限制给了和没给完全没区别…… 所以这就是一道最小生成
阅读全文
摘要:"Luogu P3275" 显然是一道经典的差分约束系统 相关知识可以查看: "【Luogu 1993】差分约束系统问题——小K的农场" 值得注意的是这题使用最长路更合适,因为每一个人都要取得至少一个糖果。在添加超级起点时,这本身就是一个使用大于等于号的关系,如果更换成小于等于号则会导致边的方向改变
阅读全文
摘要:"Luogu P1993" 前置知识:最短路径相关算法 如果一个系统由n个变量和m个约束条件组成,形成m个形如ai aj≤k的不等式(i,j∈[1,n],k为常数),则称其为差分约束系统。 显然题目中给出的信息可以构成一个差分约束系统,虽然不等号的方向不统一,但是我们可以利用不等式的性质进行变换,将
阅读全文
摘要:"Luogu P3834" 可持久化数据结构就是支持在历史版本上进行查询和修改操作的数据结构。 主席树就是对线段树的改进,使之可持久化。 前置知识:动态开点线段树 我们利用权值(值域)线段树统计区间内的数出现的次数。 (权值线段树类似于线段树+桶) 那么我们可以对每一个位置建立一棵线段树,维护$1$
阅读全文
摘要:"Luogu P2471" 啊啊啊啊这真是一道史上最毒瘤的题目!!!!! 题意就是给出n个年份的降雨量 询问:“自从$y$年以来$x$年的降雨量最大”的正确性。 显然有多种情况需要考虑,那么就需要通过分类讨论理清程序的逻辑了。 对于“自从$y$年以来$x$年的降雨量最大”这样一句话,可以转化成如下条
阅读全文
摘要:前置知识:欧几里得算法(辗转相除法) 裴蜀定理 裴蜀定理(或贝祖定理,Bézout's identity)得名于法国数学家艾蒂安·裴蜀,说明了对任何整数a、b和它们的最大公约数d,关于未知数x和y的线性不定方程(称为裴蜀等式):若a,b是整数,且gcd(a,b)=d,那么对于任意的整数x,y,ax+
阅读全文