随笔分类 - 动态规划-状态设计
摘要:# 题目 [点这里](https://uoj.ac/contest/84/problem/811)看题目。 题面太长,我懒得抄了。 # 分析 假设五种宝石最终需要的数量为 ,则取宝石需要的操作轮数为 $\max\{A,B,C,D,E,\lceil\frac{A+B+C+D+E}
阅读全文
摘要:现在的 ABC Ex 都这么有实力的吗?
阅读全文
摘要:题目 点这里看题目。 分析 ~~从一开始就知道正确的思路,到最后都没有写成正确的算法~~。 给定一个字符串 ,考虑怎么验证它能不能由 和另外一个括号串合并起来。 一个自然的做法是,写一个 DP:设 表示 能否由 和另一个括号串前缀
阅读全文
摘要:题目 点这里看题目。 分析 我们首先来研究一下一种后缀数组的出现条件。 后缀数组自身是一个 到 的排列 。如果有字符串 的后缀数组是 ,则我们可以考虑排序后相邻的两个后缀的比较:首先比较 和 ,如果相同再比较 $\oper
阅读全文
摘要:题目 点这里看题目。 分析 显然这是一道 DP 题目。 显然,由于 都是关于列,只有 是关于行的,我们应该逐列做 DP。 状态有一点小技巧,我们可以设 表示前 列,其中有 行出现了第一个黑格子,且这 行的相对顺序已经确定的方案数。 No
阅读全文
摘要:题目 点这里看题目。 分析 真是奇妙的题目。 题目中的“向量”其实是拿来迷惑人的。如果选定了每种向量各自选多少个,我们就唯一确定了一种画多边形的方案。 所以,将限制数量化:我们需要得到一个长度为 的非负整数序列 ,满足如下条件: \[ \begin{cases} \su
阅读全文
摘要:题目 点这里看题目。 分析 我们可以先将树变成有根树,这样我们可以计算包含某个点的连通块数量,求和自然是树上所有连通块的数量。 那么,如果一个结点被连通块包含,则它的祖先也必须被包含。自顶向下的 DP 难以使用 DFS 解决,因此我们可以在 DFS 序上进行 DP,这样选择一个结点就是转移到 DFS
阅读全文
摘要:题目 点这里看 F 题。 分析 很不错的一道题。 我们可以尝试改写一下循环语句: for i in range(l, r): 其实等价于: for i in range(1, n): if( l <= i and i <= r ): 为了方便,这里“引入”了 if 语句,同时使用了 python 的
阅读全文
摘要:题目 点这里看题目。 分析 很不错的 DP 题目。 简单分析一下问题的结构:对于一次操作,直观上我们可以选一条边,然后加入一个类三角形的结构。现在对于这个三角形,我们既可以基于初始的边继续加入三角形,也可以基于新的三角形的另外两边加入新的三角形。注意到,一个三角形的另外两条边对应的是独立的子问题。这
阅读全文
摘要:题目 门前有一道很深的沟,呈一排方格状。其余部分都平平整整的,唯独有连续的 格坑坑洼洼。这些坑洼的格子被从 1 开始编号,从沟底开始算,第 格的高度为一个正整数 。 天下大雨,于是坑洼的部分会产生积水,而平整的部分的水会被直接排掉。考虑某个竖直切面,如果某个空白
阅读全文
摘要:题目 点这里看题目。 分析 玄学题目。直接搬运题解.jpg 解决这道题首先需要用到处理强连通图的一种特殊方法:耳分解 定理:一个有向图 为强连通,当且仅当它可以通过如下方法构造: 维护一个图 ;初始时,\(V'=\{v\},E'=\varnothi
阅读全文
摘要:题目 点这里看题目。 分析 手玩容易发现 good graph 的第二条要求等价于 是二分图。 说明: 设 表示某种方案中 是否被操作。 那么有 条方程。对于 ,方程的形式为 \(x_u\oplus x_v=1
阅读全文
摘要:题目 点这里看题目。 分析 一个简单的初始想法是:计算所有最终不是强连通的方案,然后再用总方案减去。 那么非强连通的方案经过缩点后,必然会变成 DAG 的形状。我们可以枚举所有 DAG 的形态,计算方案数: 每个强连通块的方案数:子问题,递归即可; 外部 DAG 的数量; 考虑求解 DAG 的数量。
阅读全文