2019.8.14 金华正睿集训总结Day18

8.14

快不行了。

DP

经典背包问题

• n个物品,每个物品有重量 w[i],求选出重量量和不超过 S 物品集合的方案数

• 01背包:每个物品最多选⼀次

• ⽆限背包(完全背包):每个物品可以选无数次

• 多重背包:每个物品最多选 k[i] 个

进阶背包问题1

• 考虑01背包问题,有 Q 种操作,每次加入一种物品或删除一种物品,每次操作完后输出不超过 S 的⽅方案数

• n,Q,S<=2000

进阶背包问题2

• 树上依赖 01 背包:如果儿子选了,则父亲必须要选

进阶背包问题3

• 有 n 种物品,第 i 种物品重量为 i,且有无限个

• 现在每次询问 (R,S),表示选不超过 R 个物品使得重量为 S的方案数

• S<=n<=5000

• R<=5000

进阶背包问题4

• 有 i 种物品,第 i 种物品最多选 i 个,且重量为 i,求选一些物品使得重量之和为 n 的方案数

• n<=100000

进阶背包问题5

• 有 n 个物品,每个物品有价值 w[i],体积 v[i],个数d[i]

• 求体积为 S 的背包最多可以装下多少价值的物品

• 1<=n, v[i]<=80, 1<=w[i],d[i],S<=10^9

经典树形DP

• 如何用树形DP求直径

• 求每个点到其他点的距离之和

• 求每个点到其他点的最长路径

• 求树上一个点权和最大的独立集

• 求树上有几个⼤⼩不超过 K 的独立集 (K<=500)

经典区间DP1

• 给定一个长度为 n 的字符串 S ,求最少插入多少字符串使得他能变成回文串

• n<=5000

经典区间DP1.5

• 给定一个字符串 S,求它的回文子序列个数

• n<=5000

经典区间DP2

• 有一个 n 个元素的序列 a,你每天可以从两端中任意取一个数,第 i 天取出的数 w 对答案的贡献为 i*w,求最大化取完时的贡献和

• n<=5000

经典区间DP3

• 有 n 个石子,第 i 个的大小为 w[i],每次可以合并相邻两个,得到他们两个大小之和的代价,且他们会并成一个新的石头,新的石头的大小是旧的两个的大小的和

• 求最大的代价之和

• n<=300

经典区间DP4

• 有 n 个数,取走一个数的代价是它乘上它相邻的两个数,开头和结尾不能取,要求你取到只剩2个数为止,求最小代价和

• n<=300

进阶区间DP1

• 给⼀个序列列 a[1…n],每次可以拿走连续一段相同的数,拿完后序列会并起来

• 求最少几次把整个序列拿完

• n<=100

进阶区间DP2

• 在数轴 [0,L] 上,有 n 个point,第 i 个的坐标是 Xi,且有个冷却时间 Ti

• 一开始你在位置 0,时间从 0 开始记录,每次你可以花费一单位的时间向左或向右移动一格

• 你的目标是激活所有 point 然后回到位置 K,激活一个 point只需要⾛到它脸上即可,不需要花费时间,但是必须在 Ti 秒后才能被激活

• 求最短的时间, L,n,K<=1000, Ti<=30000

基础状压DP1

• 给定一张⽆向图,每个点可能是⾼点或者低点,三个点(x,y,z)被称为⼀一个valley当且仅当 x,z 是高点, y是低点,且存在边(x,y)和(y,z)

• 现在要求最多有几个valley,每个点最多只能在⼀个valley里

• N<=30,高点数量<=15

基础状压DP2

• 求有多少⽆向图满足有n个点m条边,且每个点度数为偶数,并且对于每条边 (u,v) 都有 |u-v|<=K

• n,m<=30

• K<=8

基础状压DP3

• 给定 n 个物品,每个物品有重量 w[i],你需要将他们划分成不超过 m 个集合,使得每个集合的物品重量之和都不超过S,求方案数

• n,m<=14

基础状压DP4

• 有 n 个物品,每个重量为 w[i],现在你有很多个大小为 S的麻袋,求至少需要几个才能把他们全装进来?

• n<=20

进阶状压DP1

• ⼀个 n*m 的01矩阵,要求不能有相邻的 1 ,求方案数

• n,m<=12

奇怪的数位DP

• 给定数组 b[1…n],求有几个数组 a[1…n],满足0<=a[i]<=b[i] 且 a 的异或和为 0

• n<=100000

• b[i]<=10^18

好的,那么我们可以看到,今天讲的都是例题,题面就放这儿了,等我弄明白之后再来填坑

(表示补博客补到流泪,接下来要填昨天考试的坑了,嗯嗯)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值