本文主要是介绍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
好的,那么我们可以看到,今天讲的都是例题,题面就放这儿了,等我弄明白之后再来填坑
(表示补博客补到流泪,接下来要填昨天考试的坑了,嗯嗯)
这篇关于2019.8.14 金华正睿集训总结Day18的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!