各省省选
「SDOI2011」拦截导弹-CDQ分治优化dp
· ✏️ 1316 words · ☕ 3 mins read

某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度、并且能够拦截任意速度的导弹,但是以后每一发炮弹都不能高于前一发的高度,其拦截的导弹的飞行速度也不能大于前一发。某天,雷达捕捉到敌国的导弹来袭。由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹。

在不能拦截所有的导弹的情况下,我们当然要选择使国家损失最小、也就是拦截导弹的数量最多的方案。但是拦截导弹数量的最多的方案有可能有多个,如果有多个最优方案,那么我们会随机选取一个作为最终的拦截导弹行动蓝图。

我方间谍已经获取了所有敌军导弹的高度和速度,你的任务是计算出在执行上述决策时,每枚导弹被拦截掉的概率。


「AHOI2013」作业-莫队
· ✏️ 758 words · ☕ 2 mins read

给定了一个长度为 $n$ 的数列和 $m$ 个询问。

每个询问给定数列的一个区间 $[l,r]$ ,你要回答两个问题:

  • 该区间内大于等于 $a$ ,小于等于 $b$ 的数的个数,
  • 所有大于等于 $a$ ,小于等于 $b$ 的,且在该区间中出现过的数值的个数。

「CQOI2018」破解D-H协议-BSGS算法
· ✏️ 705 words · ☕ 2 mins read

简单题意:

给定一个质数 $P$ 和其原根 $g$,给定 $X$ 求 $g^x \equiv X \pmod p$ 的非负整数解 $x$。


「CQOI2018」异或序列-莫队
· ✏️ 644 words · ☕ 2 mins read

已知一个长度为 $n$ 的整数数列 $a_1,a_2,…,a_n$ ,给定查询参数 $l$ 、 $r$ ,问在 $a_l,a _ {l+1},…,a_r$ ​区间内,有多少子序列满足异或和等于 $k$ 。也就是说,对于所有的 $x,y$ $(l \leq x \leq y \leq r)$ ,能够满足 $a_x \bigoplus a _ {x+1} \bigoplus … \bigoplus a_y = k$ 的 $x,y$ 有多少组。


「JSOI2007」字符加密-后缀数组
· ✏️ 525 words · ☕ 2 mins read

喜欢钻研问题的 $JS$ 同学,最近又迷上了对加密方法的思考。一天,他突然想出了一种他认为是终极的加密办法:把需要加密的信息排成一圈,显然,它们有很多种不同的读法。

例如 JSOI07 ,可以读作: JSOI07 SOI07J OI07JS I07JSO 07JSOI 7JSOI0 ,把它们按照字符串的大小排序:

  • 07JSOI
  • 7JSOI0
  • I07JSO
  • JSOI07
  • OI07JS
  • SOI07J

读出最后一列字符:I0O7SJ,就是加密后的字符串。 但是,如果想加密的字符串实在太长,你能写一个程序完成这个任务吗?


「SDOI2011」计算器-快速幂+扩展欧几里得+BSGS算法
· ✏️ 569 words · ☕ 2 mins read

你被要求设计一个计算器完成以下三项任务:

  1. 给定 $y,z,p$ ,计算 $y^z \bmod p$ 的值;

  2. 给定 $y,z,p$ ,计算满足 $xy \equiv z \pmod p$ 的最小非负整数 $x$;

  3. 给定 $y,z,p$ ,计算满足 $y^x \equiv z \pmod p$ 的最小非负整数 $x$。

保证 $p$ 为质数。


「SDOI2013」随机数生成器-BSGS算法
· ✏️ 987 words · ☕ 2 mins read

小 $W$ 喜欢读书,尤其喜欢读《约翰克里斯朵夫》。最近小W准备读一本新书,这本书一共有 $P$ 页,页码范围为 $0 … P-1$。

小 $W$ 很忙,所以每天只能读一页书。为了使事情有趣一些,他打算使用 $\text{NOI2012}$ 上学习的线性同余法生成一个序列,来决定每天具体读哪一页。

我们用 $X_i$ 来表示通过这种方法生成出来的第 $i$ 个数,也即小 $W$ 第 $i$ 天会读哪一页。这个方法需要设置 $3$ 个参数 $a,b,X_1$ ,满足 $0 \leq a,b,X_1 \leq p-1$ ,且 $a,b,X_1$ 都是整数。按照下面的公式生成出来一系列的整数:$X _ {i+1} =(aX_i+b)\bmod p$ 其中 $\bmod$ 表示取余操作。

但是这种方法可能导致某两天读的页码一样。

小 $W$ 要读这本书的第 $t$ 页,所以他想知道最早在哪一天能读到第 $t$ 页,或者指出他永远不会读到第 $t$ 页。


「SDOI2008」仪仗队-欧拉函数
· ✏️ 454 words · ☕ 1 mins read

作为体育委员, $C$ 君负责这次运动会仪仗队的训练。仪仗队是由学生组成的 $N \times N$ 的方阵,为了保证队伍在行进中整齐划一, $C$ 君会跟在仪仗队的左后方,根据其视线所及的学生人数来判断队伍是否整齐(如下图)。

现在, $C$ 君希望你告诉他队伍整齐时能看到的学生人数。


「HNOI2004」L语言-AC自动机
· ✏️ 667 words · ☕ 2 mins read

一段文章 $T$ 是由若干小写字母构成。一个单词 $W$ 也是由若干小写字母构成。一个字典 $D$ 是若干个单词的集合。我们称一段文章 $T$ 在某个字典 $D$ 下是可以被理解的,是指如果文章 $T$ 可以被分成若干部分,且每一个部分都是字典 $D$ 中的单词。

给定一个字典 $D$ ,你的程序需要判断若干段文章在字典 $D$ 下是否能够被理解。并给出其在字典 $D$ 下能够被理解的最长前缀的位置。


「HEOI2016/TJOI2016」排序-线段树
· ✏️ 1001 words · ☕ 2 mins read

在 $2016$ 年,佳媛姐姐喜欢上了数字序列。因而他经常研究关于序列的一些奇奇怪怪的问题,现在他在研究一个难题,需要你来帮助他。这个难题是这样子的:给出一个 $1$ 到 $n$ 的全排列,现在对这个全排列序列进行 $m$ 次局部排序,排序分为两种:

  • $(0,l,r)$表示将区间 $[l,r]$ 的数字升序排序
  • $(1,l,r)$表示将区间 $[l,r]$ 的数字降序排序
    最后询问第 $q$ 位置上的数字。

「SHOI2016」随机序列-线段树
· ✏️ 919 words · ☕ 2 mins read

你的面前有 $n$ 个数排成一行,分别为 $a_1,a_2,…,a_n$ 。你打算在每相邻的两个 $a_i$c和 $a _ {i+1}$ 间都插入一个加号、减号或者乘号。那么一共有 $3^{n-1}$ 种可能的表达式。

你对所有可能的表达式的值的和非常感兴趣。但这毕竟太简单了,所以你还打算支持一个修改操作,可以修改某个 $a_i$ 的值。

你能够编写一个程序对每个修改都输出修改完之后所有可能表达式的和吗?注意,修改是永久的,也就是说每次修改都是在上一次修改的基础上进行,而不是在最初的表达式上进行。


「ZJOI2012」小蓝的好友-Treap
· ✏️ 1673 words · ☕ 4 mins read

简单版题意:

给定一个 $R \times C$ 的矩形,在其中 $N$ 个位置有随机生成的资源点。现在请你求出在所有的子矩形中,至少包含一个资源点的矩形数量。


「JSOI2007」文本生成器-AC自动机+dp
· ✏️ 902 words · ☕ 2 mins read

可读版题意:

给定 $n$ 个仅包含大写字母的模板串,求所有的长度为 $M$ 且仅包含大写字母的不同字符串中,有多少个包含至少一个模板串。答案对 $10007$ 取模。


「TJOI2013」单词-后缀数组+二分
· ✏️ 809 words · ☕ 2 mins read

可读版题意:

给定 $n$ 个字符串,第 $i$ 个字符串的长度为 $M_i$ ,求每个字符串在所有字符串中出现的次数。

数据范围:$n \leq 100,\ M = \sum M_i \leq 10^6$.