动态规划
「CF750E」New Year and Old Subsequence-矩阵+线段树+dp
· ✏️ 1156 words · ☕ 3 mins read

定义一个数字串为“妙”的当且仅当:该串包含某一子序列为 $2017$ ,且不包含子序列 $2016$。

定义一个数字串的“丑值”为:该串至少删去几个字符,可以使得剩余串变“妙”;如果删去任意多个字符,均无法使该串变“妙”,则该串的“丑值”是 $-1$。

给定一个长度为 $n$ 的数字串 $s$ 。有 $q$ 次询问,每次询问用 $(l_i,r_i)$ 表示。对于每次询问,回答子串 $s[l_i…r_i]$ 的“丑值”。


「网络流 24 题」最长递增子序列-dp+网络最大流
· ✏️ 639 words · ☕ 2 mins read

给定正整数序列 $x_1 \sim x_n$ ,以下递增子序列均为非严格递增。

  1. 计算其最长递增子序列的长度 $s$ 。

  2. 计算从给定的序列中最多可取出多少个长度为 $s$ 的递增子序列。

  3. 如果允许在取出的序列中多次使用 $x_1$ 和 $x_n$ ,则从给定序列中最多可取出多少个长度为 $s$ 的递增子序列。


「CF581F」 Zublicanes and Mumocrates - 树形dp
· ✏️ 580 words · ☕ 2 mins read

一棵树上有 $n$ 个节点,把每个节点染成黑色或白色,要求叶子节点一半是黑色,一半是白色(保证叶子节点的个数是偶数)。

求在满足要求的情况下,最小的两端颜色不同的边的数量。


「CF542D」Superhero's Job - dp + 数论
· ✏️ 627 words · ☕ 2 mins read

我们定义
$$
J(x) = \sum _ {d | x} [\gcd(x,\frac{x}{d}) = 1] d
$$

请你求出 $J(x) = A$ 有多少个 $x$ 满足条件。


「CF543C」Remembering Strings-状态压缩dp
· ✏️ 658 words · ☕ 2 mins read

给定 $n$ 个长度均为 $m$ 的字符串,再给出一个 $n$ 行 $m$ 列的矩阵 ${a _ {nm}}$。
矩阵元素 $a _ {ij}$ 代表把第 $i$ 个字符串第 $j$ 个字符改成其它任意字符所需要的代价。

现在要求对于任意一个字符串,总存在某一位置 $j$ 使得该位置上的字符在任意其他字符串该位置的字符不同。

即为对于第 x 个字符串 ,有 $\exists j \in [1,m] , \forall i \in [1,n],s _ {xj} \neq s _ {ij}$ 。

求把所有字符串修改成满足上述要求的字符串的最小代价是多少?

数据范围: $1 \le n,m \le 20,1\le a _ {ij} \le 10^6$ 。


「CF321E」Ciel and Gondolas-wqs二分+决策单调性
· ✏️ 739 words · ☕ 2 mins read

Ciel 狐狸在游乐园里排队等待上摩天轮。现在有 $n$ 个人按编号顺次在队列里,有 $m$ 条船,第 $i$ 条船到时,前 $q _ {i}$ 个人可以上船。保证 $\sum q_i = n$。 人总是不愿意和陌生人上同一条船的,当第 $i$ 个人与第 $j$ 个人处于同一条船上时,会产生 $u _ {i,j}$ 的沮丧值。请你求出最小的沮丧值和。一条船上的人两两都会产生沮丧值,不会计算这个沮丧值两次。


「CF476E」Dreamoon and Strings-动态规划
· ✏️ 774 words · ☕ 2 mins read

Dreamoon 有一个字符串 $s$ 和一个模式串 $p$ ,他会先从 $s$ 中删除恰好 $x$ 个字符来产生一个新的字符串 $s’$ 。然后他会计算 $occ(s’,p)$,即从 $s’$ 中能找到的等于 pp 的不相交的子串数量的最大值。他想让 $occ(s’,p)$ 的值尽可能大。

更形式地说,让我们用 $ans(x)$ 表示所有可以从 $s$ 中删去恰好 $x$ 个字符得到的 $s’$ 中 $occ(s’,p)$ 的最大值。Dreamoon 想要知道对于所有的 $x$ $(0 \leq x \leq |s|)$, $ans(x)$ 的值。


「CF813D」Two Melodies-简单dp
· ✏️ 650 words · ☕ 2 mins read

给定一个长度为 $n$ 的数组,我们要从中找出两个不相交(不含邮相同元素的)的子序列,要求每个子序列的任意两个相邻元素的差的绝对值为 $1$ 或 在模 $7$ 意义下相同。请你求出这两个子序列长度和的最大值。


「CF86C」Genetic engineering-AC自动机+dp
· ✏️ 727 words · ☕ 2 mins read

我们定义一个 DNA 序列为仅有 ATCG 四个字母的字符串。

给出 $m(1 \le m \le 10)$ 个 DNA 序列模式串 $s_i$,每个长度均不超过 $10$ ,我们定义一个 DNA 序列 $w$ 是好的,当且仅当对于 $w$ 的每一个位置 $i$ ,都存在至少一个模式串 $s_j$ , 使得 $w[l…r] = s_j$( $w[l…r]$ 表示一个原字符串的一个子串) , 其中 $1 \le l \le i \le r \le |w|$( $|w|$ 为 DNA序列 $w$ 的长度) 。

请你计算出所有长度为 $n(1 \le n \le 1000)$ 的好的 DNA 序列的个数。


「CF486E」LIS of Sequence-简单数据结构
· ✏️ 1047 words · ☕ 3 mins read

给你一个长度为 $n$ 的序列 $a_1,a_2,…,a_n$ ,你需要把这 $n$ 个元素分成三类:$1,2,3$,每类的条件如下:

  1. 所有的最长上升子序列都不包含这个元素

  2. 有但非所有的最长上升子序列包含这个元素

  3. 所有的最长上升子序列都包含这个元素


「CF311B」Cats Transport-斜率优化dp
· ✏️ 832 words · ☕ 2 mins read

Zxr960115 是一个大农场主。他养了 $m$ 只可爱的猫子,雇佣了 $p$ 个铲屎官。这里有一条又直又长的道路穿过了农场,有 $n$ 个山丘坐落在道路周围,编号自左往右从1到n。山丘 $i$ 与山丘 $i-1$ 的距离是 $d_i$ 米。铲屎官们住在 $1$ 号山丘。

一天,猫子们外出玩耍。猫子 $i$ 去山丘 $h_i$ 游玩,在 $t_i$ 时间结束他的游玩,然后在山丘 $h_i$ 傻等铲屎官。铲屎官们必须把所有的猫子带上。每个铲屎官都会从 $1$ 走到 $n$ 号山丘,可以不花费时间的把所有路途上游玩结束的猫子带上。每个铲屎官的速度为一米每单位时间,并且足够强壮来带上任意数量的猫子。

你的任务是安排每个铲屎官出发的时间,最小化猫子们等待的时间之和。


「CF115E」Linear Kingdom Races-dp+线段树优化
· ✏️ 882 words · ☕ 2 mins read

你是一个赛车比赛的组织者,想在线性王国中安排一些比赛。

线性王国有 $n$ 条连续的从左到右的道路。道路从左到右依次编号为从 $1$ 到 $n$ ,因此道路按照升序排列。在这些道路上可能会有几场比赛,每一场比赛都将使用这些道路的某个连续的子序列。而且,如果某场比赛举行了,你将获得一定数额的金钱。没有比赛在时间上重叠,所以每一段道路可以在多个比赛中使用。

不幸的是,所有道路的状况都不佳,需要修理。每条路都有与之相关的维修费用,你需要支付这笔费用来修理道路。只有在某场比赛中需要使用的所有道路都进行了修复,才能进行比赛。你的任务是修复道路并使你的利润最大化。你的利润被定义为你从比赛中获得的总金额减去你花在修理道路上的钱。请注意,您可以决定不修任何道路,并获得利润 $0$ 。

输出你能获得的最大利润。


「ZJOI2008」骑士-基环树+dp
· ✏️ 733 words · ☕ 2 mins read

每个骑士都有且仅有一个自己最厌恶的骑士(当然不是他自己),他是绝对不会与自己最厌恶的人一同出征的。

请你从所有的骑士中选出一个骑士军团,使得军团内没有矛盾的两人(不存在一个骑士与他最痛恨的人一同被选入骑士军团的情况),并且使得这支骑士军团最具有战斗力。

为了描述战斗力,我们将骑士按照 $1$ 至 $n$ 编号,给每名骑士一个战斗力的估计,一个军团的战斗力为所有骑士的战斗力总和。


「HNOI2007」梦幻岛宝珠-背包dp
· ✏️ 1261 words · ☕ 3 mins read

给你 $N$ 颗宝石,每颗宝石都有重量 $w_i$ 和价值 $v_i$。要你从这些宝石中选取一些宝石,保证其总重量不超过 $W$ ,且总价值最大。

请你输出最大的总价值。


「ZJOI2007」仓库建设-斜率优化
· ✏️ 555 words · ☕ 2 mins read

L 公司有 $N$ 个工厂,由高到底分布在一座山上。工厂 $1$ 在山顶,工厂 $N$ 在山脚。

由于地形的不同,在不同工厂建立仓库的费用可能是不同的。第 $i$ 个工厂目前已有成品 $P_i$ 件,在第 $i$ 个工厂位置建立仓库的费用是 $C_i$ 。

对于没有建立仓库的工厂,其产品应被运往其他的仓库进行储藏,而由于 L 公司产品的对外销售处设置在山脚的工厂 $N$ ,故产品只能往山下运(即只能运往编号更大的工厂的仓库),当然运送产品也是需要费用的,假设一件产品运送 $1$ 个单位距离的费用是 $1$ 。

假设建立的仓库容量都都是足够大的,可以容下所有的产品。你将得到以下数据:

  • 工厂 $i$ 距离工厂 $1$ 的距离 $X_i$(其中 $X_1=0$ );
  • 工厂 $i$ 目前已有成品数量 $P_i$ ;
  • 在工厂 $i$ 建立仓库的费用 $C_i$ ;

请你帮助 L 公司寻找一个仓库建设的方案,使得总的费用(建造费用+运输费用)最小。