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

动态规划本质

类似背包的dp

题目

T1:简单题

fi,j,k f i , j , k 动态规划本质

类似背包的dp

题目

T1:简单题

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

T2:SRM625

先dp完人(连通块)再插空格
fi,j f i , 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 wx1 i ∈ 0   w x − 1
i>=wx i >= w x
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 主旋律

动态规划本质

你可能感兴趣的:(大佬讲课,动态规划)