【拾题杂谈】LuoguP3384 【模板】重链剖分/树链剖分
题面:【模板】重链剖分/树链剖分大秦为你打开题目传送门
题目描述如题,已知一棵包含 $N$ 个结点的树(连通且无环),每个节点上包含一个数值,需要支持以下操作:
1 x y z,表示将树从 $x$ 到 $y$ 结点最短路径上所有节点的值都加上 $z$。
2 x y,表示求树从 $x$ 到 $y$ 结点最短路径上所有节点的值之和。
3 x z,表示将以 $x$ 为根节点的子树内所有节点值都加上 $z$。
4 x 表示求以 $x$ 为根节点的子树内所有节点值之和
输入格式第一行包含 $4$ 个正整数 $N,M,R,P$,分别表示树的结点个数、操作个数、根节点序号和取模数(即所有的输出结果均对此取模)。
接下来一行包含 $N$ 个非负整数,分别依次表示各个节点上初始的数值。
接下来 $N-1$ 行每行包含两个整数 $x,y$,表示点 $x$ 和点 $y$ 之间连有一条边(保证无环且连通)。
接下来 $M$ 行每行包含若干个正整数,每行表示一个操作。
输出格式输出包含若干行,分别依次表示每个操作 $2$ 或操作 $4$ 所得的结果(对 $P$ 取模)。
样例 #1样例输入 #11 ...
【算法介绍】树链剖分
算法简介:空取奇思的手艺接下来的内容是关于链剖分的,没错,就是链剖分,那个每次去和线段树凑在一起用的算法,其实线段树早就已经讲过很久了,这个链剖分着实讲的有点晚,不过无伤大雅,这次讲清楚便是。
友情链接:
【算法介绍】普通线段树 | 祝馀宫【算法介绍】线段树合并 | 祝馀宫
链剖分大概分为三个主流的:
树链剖分(也叫重链剖分)
实链剖分(就是熟知的恶魔 LCT )
长链剖分(和重链剖分齐名的一种剖分方式)
这一篇的内容就是关于重链剖分的,后续可能会接着把几个连剖都搞完。
算法演示:巧言贴耳的诱引算法推导:玄迷灵敏的指法首先,重链剖分其实是非常形象的。他的名字:重链剖分的重,直接表明了他的主要思路,通过轻重儿子剖分。所谓轻重儿子,我们把一个节点 $u$ 的儿子中,子树(包含那个儿子)的大小中最大的,就是重儿子,记作 son[u] ,S也就是 $u$ 的重儿子。( sz[u] 表示以 $u$ 为根的子树大小)
sz[son[u]] = \max_{v\ \in\ \operatorname{child}(u)} sz[v]那么什么叫做以轻重儿子剖分呢?我们在定义下面的内容,父亲连 ...
【奇技淫巧】特殊思维题的复杂度分析
算法简介:堆叠真空域在做题的过程中,我们经常会发现那些看上去是纯暴力,但是复杂度却是 $n\log n$ 或者其他的算法或思想。这些题抓住了做题人在计算复杂度时候的失误,从而达到了思维难度提升的效果。他们通常题目评级不高,但是却总是很难想到。
算法演示:不羁型贝特大致思想:零失误少女这类题目有一大特点:倍增
比如说这些题目 P9974【USACO23DEC】Candy Cane Feast B 、【ABC315F】Shortcuts 等等等等,他们的题目或多或少都点到了一个关键字二的幂次、翻倍。比如说 USACO 的这道,虽然没有直接提到翻倍,但是我们会注意到奶牛最多吃到和自己一样高的糖果,也就是说第一只奶牛会一直翻倍,这也保证了复杂度。
这样倍增的性质,通常是隐蔽的,有些甚至感觉微小的不可发现,这也是成就了这些题目难度的主要因素。而这种倍增是丰富多样的,比如说刚刚给出的第二题,跳过的代价显而易见是极高的,我们发现最大距离会远小于跳过多个点,更具这个性质,我们可以把题目的空间以及时间复杂度压到 $\log n$ 。这是一种倍增代价,去发现优劣的思路。
除此之外,比如说启发式合并,每次合 ...
【拾题杂谈】[USACO24OPEN] Farmer John’s Favorite Permutation B
题面:FJ’s Favorite Permutation B题目描述Farmer John 有一个长为 $N$($2\le N\le 10^5$)的排列 $p$,包含从 $1$ 到 $N$ 的每个正整数恰好一次。然而,Farmer Nhoj 闯入了 FJ 的牛棚并拆散了 $p$。为了不至于太过残忍,FN 写了一些能够帮助 FJ 重建 $p$ 的提示。当 $p$ 中剩余多于一个元素时,FN 会执行以下操作:
令 $p$ 的剩余元素为 $p_1^\prime,p_2^\prime,\ldots,p_n^\prime$,
如果 $p_1^\prime>p_n^\prime$,他写下 $p_2^\prime$ 并从排列中删除 $p_1^\prime$。
否则,他写下 $p_{n−1}^\prime$ 并从排列中删除 $p_n^\prime$。
最终,Farmer Nhoj 将按顺序写下 $N−1$ 个整数 $h_1,h_2,\ldots,h_{N−1}$。给定 $h$,Farmer John 希望得到你的帮助重建与 Farmer Nhoj 的提示相一致的最小字典序 $p$,或者判断 ...
【拾题杂谈】LuoguP11261 [COTS 2018] 直方图 Histogram
题面:[COTS 2018] 直方图 Histogram题目背景译自 Izborne Pripreme 2018 (Croatian IOI/CEOI Team Selection) D1T1。$\texttt{1s,1G}$。
题目描述给定笛卡尔坐标系中的直方图,宽度为 $n$,第 $i$ 格的高度为 $h_i$。也就是说,对于 $\forall 1\le i\le n$,第 $i$ 格所占矩形的顶点坐标分别为 $(i-1,0),(i,0),(i-1,h_i),(i,h_i)$。
给定正整数 $p$,求出满足以下条件的矩形的数量:
矩形的四个顶点的坐标均为整数;
矩形有一条边在 $x$ 轴上;
矩形完全位于直方图内部(可以与边界相切);
矩形的面积至少为 $p$。
输入格式第一行,两个正整数 $n,p$。
第二行,$n$ 个正整数 $h_1,h_2,\ldots,h_n$。
输出格式输出一行一个整数,表示答案。
样例 #1样例输入 #1126 91 4 4 5 2 3
样例输出 #113
样例 #2样例输入 #21210 53 6 1 3 2 1 5 3 4 2
样例输出 #21 ...
【拾题杂谈】LuoguP1377 [TJOI2011] 树的序
题面:[TJOI2011] 树的序题目描述众所周知,二叉查找树的形态和键值的插入顺序密切相关。准确的讲:
空树中加入一个键值 $k$,则变为只有一个结点的二叉查找树,此结点的键值即为 $k$。
在非空树中插入一个键值 $k$,若 $k$ 小于其根的键值,则在其左子树中插入 $k$,否则在其右子树中插入 $k$。
我们将一棵二叉查找树的键值插入序列称为树的生成序列,现给出一个生成序列,求与其生成同样二叉查找树的所有生成序列中字典序最小的那个,其中,字典序关系是指对两个长度同为 $n$ 的生成序列,先比较第一个插入键值,再比较第二个,依此类推。
输入格式第一行,一个整数 $n$,表示二叉查找树的结点个数。第二行,有 $n$ 个正整数 $k_1, k_2, \cdots,k_n$,表示生成序列,简单起见,$k_1 \sim k_n$ 为一个 $1$ 到 $n$ 的排列。
输出格式一行,$n$ 个正整数,为能够生成同样二叉查找树的所有生成序列中最小的。
样例 #1样例输入 #11241 3 4 2
样例输出 #111 3 2 4
提示数据范围及约定
对于 $20\%$ 的数据, $1\l ...
【算法介绍】笛卡尔树
算法简介:林雾间的行迹上次的图论差不多研究完了,这次就打算开一个新的专题。本来是想着动态规划来着,正巧有一个什么活动,让我们整一个笛卡尔树的算法学习笔记,那我就略略研究了一下,写下来的专题不出意外我都会写一些树状树形结构,尤其是二叉搜索树这一类的,可以去看博客里的二叉搜索树标签。(马上要 noip 了,更新不会太快)
刚刚也说了,笛卡尔树其实是一种二叉搜索树的结构,二叉搜索树的概念还没有讲过,估摸着后面会和平衡树的时候一起系统的介绍。而笛卡尔树作为二叉搜索树的一个分支内容,自然是有着二叉搜索树的特殊性质,我们的副标题也提到他是二叉搜索树中的小根堆,这是为什么呢?且听下文分解。
算法演示:藏蜜酒的王蜂基本概念:栖地蝠的灵笼首先我们要讲笛卡尔树,来先讲讲二叉搜索树的基本概念。所谓二叉搜索树,就是对于这棵树上所有的节点,他的左子树的所有节点都小于该节点,他的右子树中的所有点都大于该节点。特殊的,空树也是一个二叉搜索树。
举一个二叉搜索树的例子:
显而易见的,这是一个非常规范的二叉搜索树。这里给出一个二叉搜索树的可视化生成网站,可以更加直观的理解二叉搜索树。我们可以先模拟一下二叉搜索树的过程 ...
【拾题杂谈】[USACO06JAN] Redundant Paths G
题面:Redundant Paths G大秦为你打开题目传送门
题面翻译为了从 $F(1 \le F \le 5000)$ 个草场中的一个走到另一个,贝茜和她的同伴们有时不得不路过一些她们讨厌的可怕的树.奶牛们已经厌倦了被迫走某一条路,所以她们想建一些新路,使每一对草场之间都会至少有两条相互分离的路径,这样她们就有多一些选择。
每对草场之间已经有至少一条路径.给出所有 $R\ (F-1 \le R \le 10000)$ 条双向路的描述,每条路连接了两个不同的草场,请计算最少的新建道路的数量,路径由若干道路首尾相连而成.两条路径相互分离,是指两条路径没有一条重合的道路.但是,两条分离的路径上可以有一些相同的草场.对于同一对草场之间,可能已经有两条不同的道路,你也可以在它们之间再建一条道路,作为另一条不同的道路。
题目描述In order to get from one of the F (1 <= F <= 5,000) grazing fields (which are numbered 1..F) to another field, Bessie and the re ...
【拾题杂谈】LuoguP3469 [POI2008] BLO-Blockade
题面:[POI2008] BLO-Blockade大秦为你打开题目传送门
题面翻译B 城有 $n$ 个城镇(从 $1$ 到 $n$ 标号)和 $m$ 条双向道路。
每条道路连结两个不同的城镇,没有重复的道路,所有城镇连通。
把城镇看作节点,把道路看作边,容易发现,整个城市构成了一个无向图。
请你对于每个节点 $i$ 求出,把与节点 $i$ 关联的所有边去掉以后(不去掉节点 $i$ 本身),无向图有多少个有序点 $(x,y)$,满足 $x$ 和 $y$ 不连通。
【输入格式】
第一行包含两个整数 $n$ 和 $m$。
接下来 $m$ 行,每行包含两个整数 $a$ 和 $b$,表示城镇 $a$ 和 $b$ 之间存在一条道路。
【输出格式】
输出共 $n$ 行,每行输出一个整数。
第 $i$ 行输出的整数表示把与节点 $i$ 关联的所有边去掉以后(不去掉节点 $i$ 本身),无向图有多少个有序点 $(x,y)$,满足 $x$ 和 $y$ 不连通。
【数据范围】
$n\le 100000$,$m\le500000$。
题目描述There are exactly $n$ towns in By ...
【拾题杂谈】LuoguP5024 [ZJOI2004] 嗅探器
题面:[ZJOI2004] 嗅探器大秦为你打开题目传送门
题目描述某军搞信息对抗实战演习,红军成功地侵入了蓝军的内部网络。
蓝军共有两个信息中心,红军计划在某台中间服务器上安装一个嗅探器,从而能够侦听到两个信息中心互相交换的所有信息。
但是蓝军的网络相当的庞大,数据包从一个信息中心传到另一个信息中心可以不止有一条通路。
现在需要你尽快地解决这个问题,应该把嗅探器安装在哪个中间服务器上才能保证所有的数据包都能被捕获?
输入格式输入文件的第一行一个整数 $n$,表示蓝军网络中服务器的数目。
接下来若干行是对蓝军网络的拓扑结构描述,每行是两个整数 $i,j$ 表示编号为 $i$ 和编号为 $j$ 的两台服务器间存在双向连接。
服务器的编号从 $1$ 开始,一行两个 $0$ 表示网络的拓扑结构描述结束,再接下来是两个整数 $a,b$ 分别表示两个中心服务器的编号。
输出格式输出满足条件的服务器编号。如果有多个解输出编号最小的一个,如果找不到任何解,输出 No solution。
样例 #1样例输入 #112345678952 12 51 45 32 35 10 04 2
样例输出 #111
...