首页 > 其他分享 >AtCoder DP Contest 速通指南

AtCoder DP Contest 速通指南

时间:2024-10-23 11:43:16浏览次数:7  
标签:AtCoder 匹配 速通 方案 这题 即可 考虑 DP

题单链接

这是 AT 之前办的一场 DP 专题,里面都是很经典的问题,可以帮助大家复习 DP 的套路,个人感觉对于巩固基础来说质量很高,建议大家去去联系一下,尽量不要看题解。
本博客只讨论了绿色及以上难度的题目,下面是我的题解。

I Coins

设 \(f_{i,j}\) 表示扔到了第 \(i\) 个,有 \(j\) 个是正面的概率,然后完了。

J Sushi

这题不能顺推,设 \(f_{i,j,k}\) 表示剩 \(i,j,k\) 个 \(1,2,3\) 盘子时到达目标的期望步数,转移就分讨,然后化简下式子,即可。如果是递推的形式,必须要注意顺序 \(k,j,i\),否则会有后效性,写记搜会很方便。
我不会这道题,并且拿给几个人做也不会,很好的题目,让我想起来当初学概率期望的时候,现在想来确实忘记了很多套路,这题只要想到倒着做就没什么了,看起来大家都忘了。

M Candies

设 \(f_{i,j}\) 表示分到第 \(i\) 个人,还剩 \(j\) 颗糖的方案数,\(\mathcal{O}(K)\) 转移即可。

O Matching

设 \(f_{i,s}\) 表示到第 \(i\) 个左部点,右部点点的匹配情况为 \(s\) 时的方案数,这样 \(\mathcal{O}(n^22^n)\) 就做完了,但是这个不是正解,匹配的顺序不重要,并且两端匹配人数一直是相等的,所以不妨钦定是最后一个左部点在匹配,只要考虑匹配状态即可,设 \(f_{s}\) 表示右部点匹配情况为 \(s\) 时的方案数,直接枚举右部点,跟第 \(\text{popcount}(s)\) 个左部点匹配即可,这样时间复杂度就是 \(\mathcal{O}(n2^n)\) 了。

P Independent Set

设 \(f_{i,0/1}\) 表示 \(i\) 的子树内,\(i\) 为白/黑色时的方案数。

Q Flowers

找最大上升子序列即可。

R Walk

路径方案数的式子是经典的矩阵形式,矩阵快速幂即可。

S Digit Sum

数位 DP 板子。

T Permutation

有关排列 DP 的经典套路,设 \(f_{i,j}\) 表示到 \(i\),只考虑排列 \([1,i]\),以 \(j\) 结尾的方案数,转移就是直接考虑填的数在上一个排列中的位次,前缀和优化即可,这题肯定也能连续段 DP,但是我不会。

U Grouping

设 \(f_{s}\) 表示所有组的集合是 \(s\) 的最大价值,\(3^n\) 枚举子集即可。

V Subtree

设 \(f_i\) 表示 \(i\) 的子树内,\(i\) 是黑点且与子节点中的黑点相通的方案数,DP 完一遍后考虑换根,设 \(g_i\) 表示 \(i\) 节点为黑色,并且与子树外相通的方案数,\(ans_i=f_ig_i\),考虑如何求得 \(g_i\),正常套路肯定是拆贡献,但是这题模数任意,不能求逆元,这种情况往往考虑前缀积后缀积,求得前缀积后缀积之后,直接考虑拆掉父亲的贡献来求 \(g_i\) 即可。
这题我一开始想的比较复杂,并且换根时没有想到前缀积后缀积,看了题解后发现状态不必那么冗杂,直接考虑和谁相通即可。

W Intervals

什么,居然是 NOIP2023 T4!其实并不是很像,原题其实是 CF115E
设 \(f_i\) 表示最后一个 \(1\) 放在 \(i\) 时的方案数,此时有一个 \(n^2\) 做法,直接考虑和前面的 \(1\) 接上后产生的新贡献,这样是正向考虑,不如我们不改变贡献,而去改变之前的 DP 值,达到贡献抵消的效果,所以把 \(f\) 拍到线段树上,线段树维护的时在当前位置时,\(f\) 减去重复区间后的贡献,每次逃离一个区间后,给对应区间加上价值即可,线段树空间没开四倍调 20 分钟。

X Tower

如果我们知道了箱子的堆叠顺序,那么这就是一个背包问题。所以考虑如何确定背包顺序,经典贪心套路 Exchange Arguments,考虑对于两个物品,如果 A 放在上面后承重能力比 B 放在上面后承重能力大,那么就让 A 在上面,这种贪心方法往往要求元素之间的关系有传递性和交换性。根据这个规则排序后就可以使整个顺序最优,然后背包即可。

Y Grid 2

这题大家应该都做过。首先根据卡特兰数可以算出一点到另一点中间没有阻碍的方案数,由于阻碍很少,正难则反,考虑计算至少经过一个阻碍的方案数,设 \(f_i\) 表示从起点出发,到达第 \(i\) 个障碍且中间不经过其他障碍的方案数,转移就直接把之前的障碍抠掉即可,因为都是第一次到达,所以不重不漏。

Z Frog 3

斜率优化板子。

标签:AtCoder,匹配,速通,方案,这题,即可,考虑,DP
From: https://www.cnblogs.com/Ishar-zdl/p/18496055

相关文章

  • TCP与UDP协议
    (1)TCP协议面向连接、可靠、基于字节的传输,IP报头中协议号为6。一般用于对可靠性要求较高的应用。(2)UDP协议无连接、不可靠、基于报文的传输,IP报头中协议号为17。主机不需维持连接状态具有较高的传输效率,可靠性由应用层来提供。TCP报头结构①源端口和目的端口:传输层与......
  • 杭州 Day 4 上午 状压 dp
    状压一类杂题P1896[SCOI2005]互不侵犯先预处理出一行的所有可能状态\(S\),应当满足\(S\&(S≫1)=0\),因为不能有相邻的国王。用\(f(i,S,j)\)表示考虑了前\(i\)行,第\(i\)行的状态是\(S\),当前已经放了$$个国王的方案数。转移直接枚举第\(i−1\)行的状态\(T......
  • 提高组专题 dp4
    A[PA2021]OddeskidodeskiDP挺显然的,但我推错了……。\[\begin{split}dp_{i+1,j,1}&+=\sum(dp_{i,j,1}+dp_{i,j,0})\timesj\\dp_{i+1,j+1,0}&+=\sumdp_{i,j,1}\times(m-j)\\dp_{i+1,j,0}&+=\sumdp_{i,j,0}\times(m-j)\end{split}\]#include&......
  • 如何隐藏wordpress主题或插件的更新提示
    如何隐藏WordPress主题或插件的更新提示平常在维护WordPress时,有时候会因为一些错误或者兼容性等问题,我们不能马上升级主题或插件到最新的版本,需要保持旧版本,但是这时候会有一个问题就是每次点开后台都会看到非常显眼的小红点,影响后台体验在本文中我们就来说一下如何在不升级的......
  • Woodpecker: 多模态大语言模型的幻觉纠正先锋
    Woodpecker项目简介在人工智能和自然语言处理领域,多模态大语言模型(MLLMs)的快速发展引人注目。然而,这些模型面临着一个严峻的挑战-幻觉问题。所谓幻觉,指的是模型生成的文本内容与输入图像不一致的现象。为了解决这个问题,研究人员提出了各种方法,其中大多数依赖于特定数据......
  • P4170 [CQOI2007] 涂色 区间 dp
    P4170[CQOI2007]涂色区间dp模板题,不理解为什么是蓝。将现在考虑的区间\([l,r]\)分为\([l,k]\)和\([k+1,r]\),如果\(s_l=s_r\)就可以一起涂,少涂一次。方程:\[dp_{l,r}=\min_{k=l}^{r-1}dp_{l,k}+dp_{k+1,r}-[s_l=s_r]\]代码:#include<bits/stdc++.h>usingnamespac......
  • Linux 操作系统 dpkg-trigger 命令介绍和使用案例
    Linux操作系统dpkg-trigger命令介绍和使用案例dpkg-trigger是Debian和基于Debian的Linux发行版(如Ubuntu)中的一个命令,用于管理软件包的触发器。触发器是一种机制,允许软件包在安装、卸载或升级时执行特定操作。命令概述dpkg-trigger命令用于通知系统某个事件的发......
  • linux 操作系统下 dpkg-statoverride命令介绍和使用案例
    dpkg-statoverride是一个用于管理Debian和基于Debian的Linux发行版(如Ubuntu)中文件的所有权和权限的命令。它允许用户在软件包安装时覆盖文件的默认所有权和权限设置命令概述dpkg-statoverride命令提供了三种基本功能:添加覆盖删除覆盖列出当前的覆盖命令语法bash......
  • [ABC337G] Tree Inversion(换根 dp + 值域线段树)
    link题目形式就很换根dp如果这种题用朴素的做法求,就是暴力以每个点都做一次根跑树,自底向上统计,时间是\(O(n^2)\)而换根dp的思想就是分两步,一般先钦定某个点(如1)为根,统计一遍以1为根时的结果,然后挖掘如果以其他点为根时,变换对结果的影响,一般就是自顶向下更新如果换根后......
  • 九,网络编程UDP和TCP
    Java网络编程详解:从基础到实践网络编程是现代软件开发中不可或缺的一部分。在Java中,我们可以通过多种方式实现网络通信,其中最常用的是UDP和TCP协议。本文将详细介绍Java网络编程的基础知识、UDP和TCP编程的核心概念和实现方法。网络编程概述计算机网络定义计算机网络是指将地......