随笔分类 -  动态规划-状态设计

摘要:# 题目 [点这里](https://uoj.ac/contest/84/problem/811)看题目。 题面太长,我懒得抄了。 # 分析 假设五种宝石最终需要的数量为 $A,B,C,D,E$,则取宝石需要的操作轮数为 $\max\{A,B,C,D,E,\lceil\frac{A+B+C+D+E} 阅读全文
posted @ 2023-07-17 19:22 crashed 阅读(173) 评论(0) 推荐(3)
该文被密码保护。
posted @ 2023-05-28 22:46 crashed 阅读(0) 评论(0) 推荐(0)
摘要:离开暴力,一事无成 阅读全文
posted @ 2022-11-23 21:53 crashed 阅读(76) 评论(0) 推荐(0)
摘要:现在的 ABC Ex 都这么有实力的吗? 阅读全文
posted @ 2022-10-10 16:40 crashed 阅读(176) 评论(1) 推荐(0)
摘要:「NOI2022」移除石子出题人对选手没有同理心.jpg 阅读全文
posted @ 2022-09-03 10:57 crashed 阅读(369) 评论(0) 推荐(0)
摘要:题目 点这里看题目。 分析 ~~从一开始就知道正确的思路,到最后都没有写成正确的算法~~。 给定一个字符串 $T$,考虑怎么验证它能不能由 $S$ 和另外一个括号串合并起来。 一个自然的做法是,写一个 DP:设 $f_{i,j}$ 表示 $T[1,i]$ 能否由 $S[1,j]$ 和另一个括号串前缀 阅读全文
posted @ 2022-08-10 12:13 crashed 阅读(168) 评论(0) 推荐(1)
摘要:题目 点这里看题目。 分析 我们首先来研究一下一种后缀数组的出现条件。 后缀数组自身是一个 $1$ 到 $n$ 的排列 $p$。如果有字符串 $S$ 的后缀数组是 $p$,则我们可以考虑排序后相邻的两个后缀的比较:首先比较 $S[p_k]$ 和 $S[p_{k+1}]$,如果相同再比较 $\oper 阅读全文
posted @ 2022-08-05 21:05 crashed 阅读(165) 评论(3) 推荐(2)
摘要:题目 点这里看题目。 分析 显然这是一道 DP 题目。 显然,由于 $B,C$ 都是关于列,只有 $A$ 是关于行的,我们应该逐列做 DP。 状态有一点小技巧,我们可以设 $f_{i,j}$ 表示前 $i$ 列,其中有 $j$ 行出现了第一个黑格子,且这 $j$ 行的相对顺序已经确定的方案数。 No 阅读全文
posted @ 2022-06-30 09:49 crashed 阅读(71) 评论(0) 推荐(0)
摘要:有点意思的 DP 题 阅读全文
posted @ 2022-05-08 19:50 crashed 阅读(89) 评论(0) 推荐(1)
该文被密码保护。
posted @ 2022-03-17 22:42 crashed
摘要:题目 点这里看题目。 分析 首先,设原图的最小生成树的边集为 \(T\),则容易得到: \[ \begin{aligned} E(\max_{x\in T}e_x) &=\int_{0}^1P(t<\max_{x\in T}e_x)\mathrm dt \end{aligned} \] 而可以发现 阅读全文
posted @ 2022-03-13 19:46 crashed 阅读(80) 评论(0) 推荐(1)
摘要:题目 点这里看题目。 分析 真是奇妙的题目。 题目中的“向量”其实是拿来迷惑人的。如果选定了每种向量各自选多少个,我们就唯一确定了一种画多边形的方案。 所以,将限制数量化:我们需要得到一个长度为 \(n\) 的非负整数序列 \(\{c\}\),满足如下条件: \[ \begin{cases} \su 阅读全文
posted @ 2022-03-03 21:56 crashed 阅读(53) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2022-02-14 17:36 crashed 阅读(0) 评论(0) 推荐(0)
摘要:题目 点这里看题目。 分析 我们可以先将树变成有根树,这样我们可以计算包含某个点的连通块数量,求和自然是树上所有连通块的数量。 那么,如果一个结点被连通块包含,则它的祖先也必须被包含。自顶向下的 DP 难以使用 DFS 解决,因此我们可以在 DFS 序上进行 DP,这样选择一个结点就是转移到 DFS 阅读全文
posted @ 2021-11-09 21:11 crashed 阅读(104) 评论(0) 推荐(1)
摘要:题目 点这里看 F 题。 分析 很不错的一道题。 我们可以尝试改写一下循环语句: for i in range(l, r): 其实等价于: for i in range(1, n): if( l <= i and i <= r ): 为了方便,这里“引入”了 if 语句,同时使用了 python 的 阅读全文
posted @ 2021-10-20 21:21 crashed 阅读(98) 评论(0) 推荐(0)
摘要:题目 点这里看题目。 分析 很不错的 DP 题目。 简单分析一下问题的结构:对于一次操作,直观上我们可以选一条边,然后加入一个类三角形的结构。现在对于这个三角形,我们既可以基于初始的边继续加入三角形,也可以基于新的三角形的另外两边加入新的三角形。注意到,一个三角形的另外两条边对应的是独立的子问题。这 阅读全文
posted @ 2021-10-12 16:55 crashed 阅读(62) 评论(0) 推荐(0)
摘要:题目 门前有一道很深的沟,呈一排方格状。其余部分都平平整整的,唯独有连续的 \(n\) 格坑坑洼洼。这些坑洼的格子被从 1 开始编号,从沟底开始算,第 \(i\) 格的高度为一个正整数 \(h_i\)。 天下大雨,于是坑洼的部分会产生积水,而平整的部分的水会被直接排掉。考虑某个竖直切面,如果某个空白 阅读全文
posted @ 2021-10-07 19:32 crashed 阅读(104) 评论(0) 推荐(0)
摘要:题目 点这里看题目。 分析 玄学题目。直接搬运题解.jpg 解决这道题首先需要用到处理强连通图的一种特殊方法:耳分解 定理:一个有向图 \(G=(V,E)\) 为强连通,当且仅当它可以通过如下方法构造: 维护一个图 \(G'=(V',E')\);初始时,\(V'=\{v\},E'=\varnothi 阅读全文
posted @ 2021-08-15 14:25 crashed 阅读(381) 评论(0) 推荐(3)
摘要:题目 点这里看题目。 分析 手玩容易发现 good graph 的第二条要求等价于 \(G'\) 是二分图。 说明: 设 \(x_u\) 表示某种方案中 \(u\) 是否被操作。 那么有 \(|E'|\) 条方程。对于 \((u,v)\in E'\),方程的形式为 \(x_u\oplus x_v=1 阅读全文
posted @ 2021-08-09 22:26 crashed 阅读(117) 评论(0) 推荐(0)
摘要:题目 点这里看题目。 分析 一个简单的初始想法是:计算所有最终不是强连通的方案,然后再用总方案减去。 那么非强连通的方案经过缩点后,必然会变成 DAG 的形状。我们可以枚举所有 DAG 的形态,计算方案数: 每个强连通块的方案数:子问题,递归即可; 外部 DAG 的数量; 考虑求解 DAG 的数量。 阅读全文
posted @ 2021-08-09 22:08 crashed 阅读(125) 评论(0) 推荐(1)