各省省选
「SCOI2015」小凸玩密室-树形dp
· ✏️ 1774 words · ☕ 4 mins read

小凸和小方相约玩密室逃脱,这个密室是一棵有 $n$ 个节点的完全二叉树,每个节点有一个灯泡。点亮所有灯泡即可逃出密室。

每个灯泡有个权值 $a_i$ ,每条边也有个权值 $b_i$ 。点亮第 $1$ 个灯泡不需要花费,之后每点亮 $1$ 个新的灯泡 $v$ 的花费,等于上一个被点亮的灯泡 $u$ 到这个点 $v$ 的距离 $D _ {u,v}$ ,乘以这个点的权值 $a_v$ 。在点灯的过程中,要保证任意时刻所有被点亮的灯泡必须连通,在点亮一个灯泡后必须先点亮其子树所有灯泡才能点亮其他灯泡

请告诉他们,逃出密室的最少花费是多少。


「CQOI2011」动态逆序对-CDQ分治
· ✏️ 973 words · ☕ 2 mins read

对于序列 $A$ ,它的逆序对数定义为满足 $i<j$ ,且 $A_i>A_j$ 的数对 $(i,j)$ 的个数。
给出一个 $1$ 到 $n$ 的排列,按照某种顺序依次删除 $m$ 个元素,你的任务是在每次删除一个元素之前统计整个序列的逆序对数。


「ZJOI2013」K大数查询-整体二分
· ✏️ 941 words · ☕ 2 mins read

有 $N$ 个位置, $M$ 个操作。

操作有两种:

  • 如果是 1 a b c 的形式表示在第 $a$ 个位置到第 $b$ 个位置,每个位置加入一个数 $c$ ;
  • 如果是 2 a b c 形式,表示询问从第 $a$ 个位置到第 $b$ 个位置,第 $c$ 大的数是多少。

「HAOI2009」毛毛虫-树形dp
· ✏️ 380 words · ☕ 1 mins read

对于一棵树,我们可以将某条链和与该链相连的边抽出来,称其为一个“毛毛虫”。求在这个树中点数最多的毛毛虫的点数。

$n < 300000$


「LNOI2014」LCA-树链剖分-差分
· ✏️ 933 words · ☕ 2 mins read

给出一个 $n$ 个节点的有根树。有 $q$ 次询问,每次询问给出 $l,r,z$ ,求 $\sum _ {l \leq i \leq r}dep[LCA(i,z)]$ 。


「SCOI2013」多项式的运算-Splay
· ✏️ 1023 words · ☕ 3 mins read

维护一个动态的关于 $x$的无穷多项式 ,这个多项式初始时对于所有 $i$ 有 $a_i = 0$

$$
f(x)=a_0x^0+a_1x^1+a_2x^2…
$$

操作者可以进行四种操作:

  • mul L R V 表示将 $x^L$ 到 $x^R$ 这些项的系数乘上某个定值 $v$ ;

  • add L R V 表示将 $x^L$ 到 $x^R$ 这些项的系数加上某个定值 $v$ ;

  • mulx L R 表示将 $x^L$ 到 $x^R$ 这些项乘上x变量;

  • query V 求 $f(v)$ 的值。

操作集中在前三种,第四种操作不会出现超过 $10$ 次。


「SDOI2014」旅行-树链剖分+动态开点线段树
· ✏️ 827 words · ☕ 2 mins read

给定一棵 $n$ 个节点的树,对于每个点都有两个权值 $w_i,c_i$ 。

存在 $m$ 个操作,分为4类。

  • CC x c”:将 $c_x$ 更改为 $c$ ;

  • CW x w”:将 $w_x$ 更改为 $w$ ;

  • QS x y”:对所有满足在 $x$ 到 $y$ 路径上且 $c_i = c_x = c_y$ 的节点 $i$,求 $\sum w_i$ ;

  • QM x y”:对所有满足在 $x$ 到 $y$ 路径上且 $c_i = c_x = c_y$ 的节点 $i$ ,求 $\max(w_i)$ ;

对于后两个操作,保证 $c_x = c_y$ 。


「SDOI2011」消防-树的直径+单调队列
· ✏️ 731 words · ☕ 2 mins read

某个国家有 $n$ 个城市,这 $n$ 个点之间的边构成一棵树。

现求一条边长度和不超过 $S$ 的路径(两端都是城市,可以只为一个城市),使得所有城市到这条路径的距离的最大值最小,并输出这个最小值。


「SDOI2013」森林-主席树+LCA+启发式合并
· ✏️ 903 words · ☕ 2 mins read

小Z有一片森林,含有 $N$ 个节点,每个节点上都有一个非负整数作为权值。初始的时候,森林中有 $M$ 条边。

小Z希望执行 $T$ 个操作,操作有两类:

  • Q x y k 查询点 $x$ 到点 $y$ 路径上所有的权值中,第 $k$ 小的权值是多少。此操作保证点 $x$ 和点 $y$ 连通,同时这两个节点的路径上至少有 $k$ 个点。

  • L x y 在点 $x$ 和点 $y$ 之间连接一条边。保证完成此操作后,仍然是一片森林。

强制在线。

对于所有的数据 $n,m,T \leq 8 \times 10^4$ 。


「HNOI2009」梦幻布丁-set-启发式合并
· ✏️ 597 words · ☕ 2 mins read

$n$ 个布丁摆成一行,每个布丁最开始都有一个颜色 $c_i$ ,进行 $m$ 次操作。

操作格式:

  • 1 c d :将所有的 $c$ 颜色替换为$d$

  • 2 :查询当前布丁序列一共有多少段颜色。例如颜色分别为 $1,2,2,1$ 的四个布丁一共有3段颜色。


「HNOI2010」弹飞绵羊-动态树
· ✏️ 773 words · ☕ 2 mins read

游戏一开始,Lostmonkey 在地上沿着一条直线摆上 $n$ 个装置,每个装置设定初始弹力系数 $K_i$ ,当绵羊达到第 $i$ 个装置时,它会往后弹 $K_i$ 步,达到第 $i+K_i$ 个装置,若不存在第 $i+K_i$ 个装置,则绵羊被弹飞。

存在两种操作:

  • 查询在第 $i$ 个装置起步时,再经多少次会被弹飞。

  • 修改第 $i$ 个装置的弹力系数为 $K’$ 。

保证任何时候,任何装置弹力系数均为正整数。


「HAOI2007」理想的正方形-单调队列
· ✏️ 567 words · ☕ 2 mins read

有一个 $a \times b$ 的整数组成的矩阵,现请你从中找出一个 $n\times n$ 的正方形区域,使得该区域所有数中的最大值和最小值的差最小,输出这个最小的差值。


「CQOI2015」任务查询系统-可持久化线段树
· ✏️ 636 words · ☕ 2 mins read

超级计算机中的任务用三元组 $(S_i,E_i,P_i)$ 描述, $(S_i,E_i,P_i)$ 表示任务运行区间为 $[S_i,E_i]$ ,其优先级为 $P_i$ 。

给出 $n$ 个任务。随后给出 $m$ 个询问,第 $X_i$ 秒正在运行的任务中,优先级最小的 $K_i$ 个任务的优先级之和是多少。特别的,如果 $K_i$ 大于第 $X_i$ 秒正在运行的任务总数,则直接回答第 $X_i$ 秒正在运行的任务优先级之和。

强制在线。


「SDOI2008」洞穴勘测-LCT
· ✏️ 624 words · ☕ 2 mins read

辉辉热衷于洞穴勘测。

辉辉有一台监测仪器可以实时将通道的每一次改变状况,并在辉辉手边的终端机上显示:

Connect u v代表监测到洞穴u和洞穴v之间出现了一条通道,Destroy u v代表监测到洞穴u和洞穴v之间的通道被毁。Query u v,代表向监测仪询问此时洞穴u和洞穴v是否连通。

保证无论通道怎么改变,任意时刻任意两个洞穴之间至多只有一条路径。

已知在第一条指令显示之前,洞穴群中没有任何通道存在。


「SDOI2013」直径-树的直径
· ✏️ 1700 words · ☕ 4 mins read

定义一棵树上最长的路径为树的直径。树的直径可能不唯一。

给定的一棵 $n$ 个结点的树,求其直径的长度,以及有多少条边满足所有的直径都经过该边。