题解
「SDOI2009」HH去散步-矩阵快速幂+dp
· ✏️ 731 words · ☕ 2 mins read

HH 是个喜欢变化的人,所以他不会立刻沿着刚刚走来的路走回。 又因为 HH 是个喜欢变化的人,所以他每天走过的路径都不完全一样,他想知道他究竟有多少种散步的方法。

现在给你学校的地图(假设每条路的长度都是一样的都是 $1$ ),问长度为 $t$ ,从给定地点 $A$ 走到给定地点 $B$ 共有多少条符合上述条件的路径。


「ZJOI2012」网络-LCT
· ✏️ 949 words · ☕ 2 mins read

有一个无向图 $G$ ,每个点有个权值,每条边有一个颜色。这个无向图满足以下两个条件:

  • 对于任意节点连出去的边中,相同颜色的边不超过两条。
  • 图中不存在同色的环,同色的环指相同颜色的边构成的环。

在这个图上,你要支持以下三种操作:

  • 修改一个节点的权值。
  • 修改一条边的颜色。
  • 查询由颜色 $c$ 的边构成的图中, $u$ 到节点 $v$ 之间的简单路径上的节点的权值的最大值。

对于 100% 的数据,保证颜色不多于 $10$ 种。


「NOI2015」品酒大会-后缀数组
· ✏️ 1520 words · ☕ 4 mins read

简单版题意:

给定一个长度为 $n$ 的字符串,和一个长度为 $n$ 的数列 ${a_n}$ ,求对于 $r$ 从 $0$ 到 $n-1$ ,所有满足 $1 \leq p < q \leq n$ 且 $lcp(p,q) \geq r$ 的数对个数以及满足上述条件的数对中 $a_p \times a_q$ 的最大值。( $a_i$ 可以为负数)


「POI2011」Tree Rotations-线段树合并
· ✏️ 1677 words · ☕ 4 mins read

现在有一棵二叉树,所有非叶子节点都有两个孩子。在每个叶子节点上有一个权值(有 $n$ 个叶子节点,满足这些权值为 $1…n$ 的一个排列)。可以任意交换每个非叶子节点的左右孩子。
要求进行一系列交换,使得最终所有叶子节点的权值按照前序遍历序写出来,逆序对个数最少。


「JLOI2015」城池攻占-左偏树
· ✏️ 1104 words · ☕ 3 mins read

有 $m$ 个骑士攻占 $n$ 个城池。除 $1$ 号城池外,城池 $i$ 会受到另一座城池 $f_i$ 的管辖,其中 $f_i < i$。也就是说,所有城池构成了一棵有根树。第 $i$ 个骑士的初始战斗力为 $s_i$,第一个攻击的城池为 $c_i$。

每个城池有一个防御值 $h_i$,如果一个骑士的战斗力大于等于城池的生命值,那么骑士就可以占领这座城池;否则占领失败,骑士将在这座城池牺牲。占领一个城池以后,骑士的战斗力将发生变化,然后继续攻击管辖这座城池的城池,直到占领 $1$ 号城池,或牺牲为止。

除 $1$ 号城池外,每个城池 $i$ 会给出一个战斗力变化参数 $a_i$;$v_i$。若 $a_i = 0$,攻占城池 $i$ 以后骑士战斗力会增加 $v_i$;若 $a_i = 1$,攻占城池 $i$ 以后,战斗力会乘以 $v_i$。注意每个骑士是单独计算的。也就是说一个骑士攻击一座城池,不管结果如何,均不会影响其他骑士攻击这座城池的结果。

对于每个城池,输出有多少个骑士在这里牺牲;对于每个骑士,输出他攻占的城池数量。


「APIO2012」派遣-左偏树
· ✏️ 627 words · ☕ 2 mins read

给定一棵有根树,每个点有一个代价 $C_i$ ,权值 $L_i$ ,要求从这个树某个节点 $k$ 的子树(包含该节点)选取若干个节点,使得选取节点的个数乘上节点 $k$ 的权值最大,且这若干个节点的代价和不超过给定的限制 $M$ 。


「HNOI2013」游走-期望方程
· ✏️ 733 words · ☕ 2 mins read

一个无向连通图,顶点从 $1$ 编号到 $N$ ,边从 $1$ 编号到 $M$ 。 小 Z 在该图上进行随机游走,初始时小 Z 在 $1$ 号顶点,每一步小 Z 以相等的概率随机选 择当前顶点的某条边,沿着这条边走到下一个顶点,获得等于这条边的编号的分数。当小 Z 到达 N 号顶点时游走结束,总分为所有获得的分数之和。 现在,请你对这 $M$ 条边进行编号,使得小 Z 获得的总分的期望值最小。


「HAOI2012」高速公路-期望+线段树
· ✏️ 730 words · ☕ 2 mins read

Y901 高速公路是一条由 $N-1$ 段路以及 $N$ 个收费站组成的东西向的链,我们按照由西向东的顺序将收费站依次编号为 $1 \sim N$ ,从收费站 $i$ 行驶到 $i+1$ (或从 $i+1$ 行驶到 $i$ )需要收取 $V_i$ 的费用。高速路刚建成时所有的路段都是免费的。

政府部门根据实际情况,会不定期地对连续路段的收费标准进行调整,根据政策涨价或降价。

求对于给定的 $l,r(l < r)$ ,在第 $l$ 个到第 $r$ 个收费站里等概率随机取出两个不同的收费站 $a$ 和 $b$ ,那么从 $a$ 行驶到 $b$ 将期望花费多少费用呢?


「ZJOI2014」力-快速傅立叶变换
· ✏️ 479 words · ☕ 1 mins read

给出 $n$ 个数 $q_i$ ,给出 $F_j$ 定义为:

$$
F_j = \sum _ {i < j}\frac{q_i q_j}{(i-j)^2} - \sum _ {i > j}\frac{q_i q_j}{(i-j)^2}
$$

令 $E_i = \frac{F_i}{q_i}$ ,求 $E_i$ 的值。


「IOI2014」Wall-线段树
· ✏️ 409 words · ☕ 1 mins read

给定一个长度为 $n$ 且初始值全为 $0$ 的序列。你需要支持以下两种操作:

  • $Add, L, R, h$ :将序列 $[L, R]$ 内所有值小于 $h$ 的元素都赋为 $h$,此时不改变高度大于 $h$ 的元素值
  • $Remove, L, R, h$:将序列 $[L, R]$ 内所有值大于 $h$ 的元素都赋为 $h$ ,此时不改变高度小于 $h$ 的元素值

你需要输出进行 $k$ 次上述操作之后的序列。


「CF990G」GCD Counting-并查集/点分治
· ✏️ 1227 words · ☕ 3 mins read

给定一个 $n$ 个节点的树,每个点有一个正整数权值 $a_i$ 。我们定义 $g(x,y)$ 为 $x,y$ 之间简单路径上所有点(包括端点)的权值的最大公约数。

现在请求出对于所有的 $i \in [1,2×10^5]$ ,满足 $1 \le x \le y \le n$ 且 $g(x,y) = i$ 的点对 $(x,y)$ 的数目。


「SCOI2010」股票交易-dp+单调队列
· ✏️ 642 words · ☕ 2 mins read

lxhgww预测到了未来 $T$ 天内某只股票的走势,第 $i$ 天的股票买入价为每股 $AP_i$ ,第 $i$ 天的股票卖出价为每股 $BP_i$ (数据保证对于每个 $i$ ,都有$AP_i \ge BP_i$ ),第$i$ 天的一次买入至多只能购买 $AS_i$ 股,一次卖出至多只能卖出 $BS_i$ 股。两次交易(某一天的买入或者卖出均算是一次交易)之间,至少要间隔 $W$ 天;在任何时间一个人的手里的股票数不能超过 $MaxP$ 。

在第 $1$ 天之前,lxhgww手里有数目无限的钱,但是没有任何股票,在 $T$ 天以后, lxhgww 能赚到的钱最多是多少?


「HAOI2016」找相同字符-后缀数组+单调栈
· ✏️ 1661 words · ☕ 4 mins read

给定两个字符串,求出在两个字符串中各取出一个子串使得这两个子串相同的方案数。当这两个子串中只要有一个取得位置不同时,两个方案不同。


「NOI2016」优秀的拆分-后缀数组
· ✏️ 1273 words · ☕ 3 mins read

如果一个字符串可以被拆分为 $AABB$ 的形式,其中 $A$ 和 $B$ 是任意非空字符串,则我们称该字符串的这种拆分是优秀的。一个字符串可能没有优秀的拆分,也可能存在不止一种优秀的拆分。

现在给出一个长度为 $n$ 的字符串 $S$ ,我们需要求出,在它所有子串的所有拆分方式中,优秀拆分的总个数。这里的子串是指字符串中连续的一段。

以下事项需要注意:

  • 出现在不同位置的相同子串,我们认为是不同的子串,它们的优秀拆分均会被记入答案。
  • 在一个拆分中,允许出现 $A = B$。例如 $cccc$ 存在拆分 $A = B = c$。
  • 字符串本身也是它的一个子串。