2018.7.31动态规划(吴瑾昭)(不完整)

本文深入探讨了动态规划的核心思想及应用技巧,通过多个经典题目解析动态规划的状态定义、转移方程,并介绍了背包问题、容斥原理等关键概念。此外,还涉及了数位DP、状态压缩DP等高级技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

动态规划本质

类似背包的dp

题目

T1:简单题

fi,j,kfi,j,k动态规划本质

类似背包的dp

题目

T1:简单题

fi,j,kfi,j,k 到第i个数,选j个,和未k

T2:SRM625

先dp完人(连通块)再插空格
fi,jfi,j表示前i个人有j个连通块的方案数
新来一个人,可以产生一个新连通块,也可以消掉一个连通块,也可以并到一个连通块里
也就是f[i][j]f[i][j]能转移到f[i+1][j1]f[i+1][j−1](系数为j),f[i+1][j+1]f[i+1][j+1](系数为j),f[i+1][j]f[i+1][j](系数为2j)

T3:BZOJ2287

实际上是在退背包

一个看起来类似于容斥的做法。
假设要退wi,先不管做一遍背包f[i]表示装满i
对于每个x,需要求出g[i]表示不用w[x]装满的方案数
对于i0 wx1i∈0 wx−1
i>=wxi>=wx
g[i]=f[i]g[iw[x]]g[i]=f[i]−g[i−w[x]]

实际上一个背包是一个多项式(生成函数)
所以删除一个元素相当于是除以一个单项式

T4(extra):

prefer编码
先想一个暴力,先暴力枚举出每个点的度数,根据prufer编码可以得到这样度数的数的不同形态的图的个数
可以得到一个式子….

T4:bzoj4753

二分性价比,移项,得到每个点的新花费,构成一个树的结构
每次选一个连通块
就是上午dfs序上dp即可

T5:(extra)SRM613

关注列的性质,从左往右dp
f`

T6:(extra)SRM648

前置知识:
fn表示n个代表号的无向图个数
容斥
f[n]=2^{n(n-1)/2} - (见笔记)

关于这题
f[i][j]f[i][j]表示i个点j座桥的带标号无向连通图个数
f[i][j]=Σf[i][j]f[ii][jj]f[i][j]=Σf[i′][j′]∗f[i−i′][j−j′](后面还有一串见笔记)

数位dp

例题

T1:EG.BZOJ1026

套路题

T2:BZOJ

略过

T3:SRM522 LEVEL 3

考虑怎么样的01串是不合法的
显然有连续的1是不合法的,其余都是合法的
按位来做就行了
直接枚举每一位,看这一位是1的个数是奇数还是偶数
f[i][j][k]

T4 CF908G

状压dp

题目

T1:旅行商问题

略过

T2:BZOJ3864

T3:GAMES ON DAG

容斥dp

题目

T1:UOJ#37 主旋律

动态规划本质

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值