当前位置: 首页 > news >正文

DP 超大杯训练

没做完都怪明日方舟,为什么要发这个余和令的皮肤,为什么要发那么多老陈的前瞻!

CF1842G

这我不是做过。

先把期望变成总和除以方案数的形式,于是变成了计数题。

不难发现可以将类似 \(\prod (a_i + v + \cdots)\) 的式子拆开,相当于每个多项式中选一项,对这个东西计数。

\(f_{i, j}\) 表示前缀 \(i\) 钦定了 \(j\) 个操作。那么转移分为当前 \(i\)\(a_i\),或之前就钦定过的 \(v\),或者我们新钦定一个 \(v\)

\(f_{i + 1, j} \leftarrow f_{i, j}(a_{i + 1} + jv)\)\(f_{i + 1, j + 1} \leftarrow f_{i, j}(m - j)(i + 1)v\)

然后计算答案的时候考虑我们一个 \(f_{n, i}\) 还剩下 \(n - i\) 个操作没有钦定,并且这 \(n - i\) 个操作我们没有算它的贡献。

于是答案就是 \(\frac{\sum f_{n, i}n^{m - i}}{n ^ m}\)

Submission #346781781 - Codeforces

AGC022E

好牛的题,考虑判定转 DP。

考虑建一个 DFA 出来。如果 000 直接删掉,而 111 显然可以保留到最后,剩下的情况等价于相邻 01 对消。

那么判定一个串是否合法开一个栈即可,前半部分全是 1 后半部分全是 0,如果新加入 1 就和 0 消除,新加入超过三个 0 就消成一个。

容易发现此时只要有两个 1 就一定赢了,因为 0 也不超过两个。按照这个过程 DP 即可。

uoj748

考虑判定 \(S\) 能否到 \(T\),一个假的贪心是直接将 \(S\) 不断地匹配到 \(T\),但者会被 S = (((( T=()()(((( 卡掉。

考虑反悔贪心那就是对的了,于是 DP 设 \(f_{i, j, k}\) 表示 \(T\) 匹配到 \(i\)\(S\) 匹配到 \(j\),当前 \(T\) 中未匹配部分的前缀和为 \(k\)。如果出现 \(k < 0\) 的情况就直接反悔即可。

P9197

做过,非常典的连续段 DP。从小到大插入维护连续段即可。

AGC060C

好牛的题。

会发现题目给出一个满二叉树 \(u\)\(v\) 一个在极左链上一个在极右链上,我们考虑从小到大填数,那么会发现填数的过程相当于树的拓扑序。

于是只有 \(u\)\(v\) 到根的两个链是有用的,记 \(f_{i, j}\) 表示处理了左链的前 \(i\) 个结点,右链的前 \(j\) 个结点, \(P_u < P_v\) 的概率。

假设要将 \(i + 1\) 放入新的拓扑序里,那么要乘上 \(\frac{\binom{x + y}{x}}{\binom{x + y - 1}{x - 1}}\) 的概率,即 \(\frac{x}{x + y}\)

qoj8047

很难很难。

先将 dfs 序对应到唯一的一棵树上。会发现有的东西在字数内和作为兄弟是一样的,于是我们钦定以下大小关系:父亲小于儿子,兄弟之间顺序排列,最后一个儿子大于兄弟。小于是连边的方向。

考虑将儿子到兄弟的边容斥掉,算不存在这条边的方案减去反边的方案,具体画个图就知道了。

计数考虑 DP 设 \(f_{i, j}\) 表示子树大小为 \(i\),且兄弟连出去的部分大小为 \(j\)。转移也很复杂,自己推一推吧。

qoj1839

显然将 \(p,q\) 交换使得 \(p_i = i\) 并没有影响。

不难刻画出判定条件为不存在一对 \((i, j)\) 使得 \(i < j, q_i > q_j, s_i = 1, s_j = 0\)

\((i, q_i)\) 拍进坐标系里,相当于要存在一条折线将坐标系分成两半,左上角都是 \(0\),右下角都是 \(1\)

结论:如果 \(q\) 确定,那么合法 \(s\) 的数量是 \(q\) 的上升子序列的数量。

那么我们直接对可能的上升子序列计数。记 \(f_{i, j, k}\) 表示前 \(i\) 个位置,当前子序列末尾为 \(j\),当前有 \(k\) 个位置没有填数。

最终答案为:\(\sum f_{n, j, k} \cdot k!\)

AGC020F

好诡异的套路。

先破环为链,会发现线段的长度为整数,于是我们只关心整数部分的数值和小数部分的相对大小。

那么我们可以直接 \(O(n!)\) 枚举小数部分的相对大小,相当于离散化。然后 DP 设 \(f_{i, j, s}\) 表示当前处理完了坐标 \(\leq i\) 的线段,向右延伸到了 \(j\),用的线段状态为 \(s\)

于是我们用神秘 \(O(n!2^n(nc)^2)\) 完成了这道题。

P4516

弱智题,设 \(f_{u, i, 0/1,0/1}\) 表示 \(u\) 子树内放了 \(i\) 个监听器,\(u\) 上是否放了监听器,\(u\) 是否被监听。

*P10064

只需要考虑叶子,令 \(S_u\) 为叶子 \(u\) 在新图上一步能到达的结点,显然 \(S\) 的并为一个连通块。于是我们将问题转化为连通块计数。

对连通块计数考虑点边容斥,每个点属于 \(S\) 的交的方案数减去边即可。

具体细节有点复杂,后面再补。

CF1476F

不算太难,考虑设 \(f_i\) 表示前 \(i\) 个灯笼覆盖到的最远前缀。

若第 \(i\) 个灯笼向右,则当 \(f_{i - 1} \geq i\)\(f_i = \max(f_{i - 1}, i + p_i)\);当 \(f_{i - 1} < i\)\(f_i = f_{i - 1}\)

若第 \(i\) 个灯笼向左,先找出最小的 \(f_t \geq i - p_i\)。那么 \(f_i \leftarrow \underset{t + 1\leq k \leq i}{\max}\{k + p_k\}\)

第二种情况先二分 \(t\) 然后数据结构优化 \(k + p_k\) 的最大值即可。

qoj1355

\(f_{i, j}\) 为前 \(i\) 个音符错过了 \(j\) 个,且第 \(i\) 个音符错过的方案数。令 \(w_{l, r}\)\(l \sim r\) 的所有音符都得到的贡献。

\(f_{i, j} = \max\{f_{i - 1, j - 1},\underset{k < i - 1}{\max}\{f_{k, j - 1} + w_{k + 1, i - 1}\} \}\)

容易证明 \(w\) 满足四边形不等式,那么我们将 dp 视为从 \(f_{j - 1}\) 转移到 \(f_j\),根据四边形不等式的结论:\(P_{j - 1, i - 1} \leq P_{j - 1, i}\)

转移的时候直接分治即可优化到 \(O(n^2\log n)\)

CF1988F

推式子基本功不够良好。

排列前缀最大值考虑一下连续段 DP,令 \(f_{i, j, k}\) 表示 \(i\) 个数的排列,前缀最大值有 \(j\) 个,有 \(k\) 个上升点,\(g_{i, j, k}\) 同理为后缀最大值。

\(S(n)\) 为长为 \(n\) 的排列的答案,那么枚举 \(n\) 的位置有

\[S(n) = \sum_{p = 1}^{n}\sum_{i, x = 0}^{p - 1}\sum_{j, y = 0}^{n - p} \binom{n - 1}{p - 1}f_{p - 1, i, x}g_{n - p, j, y}a_{i + 1}b_{j + 1}c_{x + y + [p > 1]} \]

\[A(n, x) = \sum_{i = 0}^n f_{n, i, x}a_{i + 1} \\ B(n, x) = \sum_{i = 0}^n g_{n, i, x}b_{j + 1} \]

\[S(n) = (n - 1)!\sum_{p = 1}^n \sum_{x = 0}^{p - 1}\sum_{y = 0}^{n - p} \frac{A(p - 1, x)}{(p - 1)!} \frac{B(n - p, y)}{(n - p)!}c_{x + y + [p > 1]} \]

由于要枚举 \(n\) 于是做到 \(O(n^4)\)。原因是每个 \(n\) 都单独算一遍比较蠢。

进一步令 \(S'(n) = \frac{S(n)}{(n - 1)!}\)\(A'(n, x) = \frac{A(n, x)}{n!}\)\(B'(n, x) = \frac{B(n, x)}{n!}\)\(i = p - 1, j = n - p\),我们枚举 \((i, j)\) 贡献 \(S(i + j + 1)\)

\[S'(i + j + 1) \leftarrow \sum_{x = 0}^{i}A'(i, x)\sum_{y = 0}^j B'(j, y)c_{x + y + [i > 0]} \]

对每个 \(s_{i, x} = \sum_{y = 0}^j B'(j, y)c_{x + y + [i > 0]}\) 预处理即可做到 \(O(n^3)\)

P11714

DAG 容斥模板题。以后有时间再写篇题解。

P5642

没来得及做。

http://www.jsqmd.com/news/359279/

相关文章:

  • BISHI23 小红书推荐系统
  • 小程序计算机毕设之基于微信小程序的校园跑腿小程序基于springboot+小程序的校园跑腿小程序设计与实现(完整前后端代码+说明文档+LW,调试定制等)
  • Thymeleaf 核心用法全解析
  • 大数据BI工具的性能测试报告
  • 小程序计算机毕设之基于springboot和mysql的模拟驾校考试系统基于springboot+小程序的驾校考试模拟系统小程序(完整前后端代码+说明文档+LW,调试定制等)
  • 实用指南:使用 Apache Jena 构建 Java 知识图谱
  • 企业智能体系统架构的存储方案:AI应用架构师的选型指南
  • 【毕业设计】基于springboot+小程序的驾校考试模拟系统小程序(源码+文档+远程调试,全bao定制等)
  • Redis集群搭建及验证
  • 小程序毕设项目推荐-基于SpringBoot+Vue+Uniapp的校园任务通平台微信小程序设计与实现【附源码+文档,调试定制服务】
  • 小程序毕设项目推荐-基于springboot+小程序的城市公交查询系统线路查询、站点搜索设计与实现【附源码+文档,调试定制服务】
  • 基础功能能否满足需求?10款主流AI效率工具深度评测
  • 小程序毕设选题推荐:基于微信小程序的城市公交查询系统的设计与实现基于springboot+小程序的城市公交查询系统设计与实现【附源码、mysql、文档、调试+代码讲解+全bao等】
  • 游戏规则从来不是“1%的人定的”,而是“人性定的”:突破困境的关键,不是“对抗规则”,不是“抱怨1%的人”,而是“突破人性弱点,聚焦自己的价值,掌握规则的主动权”
  • 项目开发中代码合并全流程解析
  • Excel革命!Python让表格处理从“加班到哭”到“准时下班”
  • 小程序毕设选题推荐:基于springboot+小程序的校园跑腿小程序设计与实现基于SpringBoot+Vue的校园跑腿小程序的设计与实现【附源码、mysql、文档、调试+代码讲解+全bao等】
  • 构建之法阅读笔记1
  • 洛谷P2518
  • 【Docusarous】首页增加链接形式进入文档
  • Excel数据分析太慢?Python让你秒变报表大神,三天搞定一个月工作
  • AI系统灾备职业发展:架构师如何提升竞争力?
  • 为什么好心的金钱奖励,反而杀死了孩子的自律与热爱:人有两种动力:内在动机、外在动机。当强外在物质奖励,介入本身有内在动机的行为时,内在动机会被逐渐驱逐,行为最终依赖外部奖励,一旦奖励消失/不足,行为立
  • 洛谷P3857
  • 洛谷P3177
  • 洛谷P1896
  • 计算机小程序毕设实战-基于springboot+小程序的桂林旅游桂林源记小程序的设计与实现基于springboot桂林旅游景点导游平台【完整源码+LW+部署说明+演示视频,全bao一条龙等】
  • 论文写作利器:6款AI工具打造专业级内容
  • Leetcode 剑指 Offer II 161. 连续天数的最高销售额
  • 【毕业设计】基于springboot+小程序的桂林旅游桂林源记小程序的设计与实现(源码+文档+远程调试,全bao定制等)