摘要: 【BZOJ4709】柠檬(动态规划,单调栈) 题面 "BZOJ" 题解 从左取和从右取没有区别,本质上就是要分段。 设$f[i]$表示前$i$个位置的最大值。 那么相当于我们枚举一个前面的位置$j$,然后找到这一段中最大的$s_0t^2$ 但是这样子很不优秀。 我们贪心的思考一下,既然这一段最后加起 阅读全文
posted @ 2018-07-13 20:38 小蒟蒻yyb 阅读(456) 评论(0) 推荐(0) 编辑
摘要: 【BZOJ3203】保护出题人(动态规划,斜率优化) 题面 "BZOJ" "洛谷" 题解 在最优情况下,肯定是存在某只僵尸在到达重点的那一瞬间将其打死 我们现在知道了每只僵尸到达终点的时间,因为僵尸要依次打死。 所以我们假设血量的前缀和是$s_i$ 那么我么必须在它到达的时间$t_i$之前打出总共不 阅读全文
posted @ 2018-07-13 19:32 小蒟蒻yyb 阅读(344) 评论(0) 推荐(0) 编辑
摘要: 【BZOJ3437】小P的牧场(动态规划,斜率优化) 题面 "BZOJ" 题解 考虑暴力$dp$,设$f[i]$表示强制在$i$处建立控制站的并控制$[1..i]$的最小代价。 很显然,枚举上一个控制站的位置$j$ $f[i]=min(f[j]+Calc(i,j)+a[i])$,其中$Calc(i, 阅读全文
posted @ 2018-07-13 16:00 小蒟蒻yyb 阅读(293) 评论(0) 推荐(0) 编辑
摘要: 【BZOJ3156】防御准备(动态规划,斜率优化) 题面 "BZOJ" 题解 从右往左好烦啊,直接$reverse$一下再看题。 设$f[i]$表示第$i$个位置强制建立检查站时,前面都满足条件的最小代价 $f[i]=min(f[j]+sum[i j 1])+A[i]$ 即枚举上一个检查站建立的位置 阅读全文
posted @ 2018-07-13 15:03 小蒟蒻yyb 阅读(279) 评论(0) 推荐(0) 编辑
摘要: 【BZOJ2727】双十字(动态规划,树状数组) 题面 "BZOJ" "洛谷" 题解 我们去年暑假的时候考试考过。 我当时写了个大暴力混了$70$分。。。。 大暴力是这么写的: 预处理每个位置向左右/上/下能够拓展的最多的长度(左右相当于分别求然后取$min$) 接着枚举双十字的中轴线,所在的列 然 阅读全文
posted @ 2018-07-13 11:25 小蒟蒻yyb 阅读(391) 评论(0) 推荐(0) 编辑
摘要: 【BZOJ4361】isn(动态规划,容斥) 题面 "BZOJ" 题解 首先我们如果确定了一个不降序列,假设它的长度为$i$, 那么可行的方案数为$i (n i)!$,但是这样有一些非法的情况,即删掉最后一个数之前已经是有序的了。 那么设$g[i]$表示长度为$i$的不降序列的总数 因为所有长度为$ 阅读全文
posted @ 2018-07-13 09:08 小蒟蒻yyb 阅读(727) 评论(0) 推荐(0) 编辑
摘要: 【BZOJ1068】压缩(动态规划) 题面 "BZOJ" "洛谷" 题解 比较简单的$dp$ 设$f[i][j]$表示当前已经匹配到了原串的第$i$个位置,上一个$M$在第$j$个字符之后的方案数。 每次从当前$f[i][j]$位置转移出去,转移只有两种。 一种是直接匹配一位,也就是$f[i][j] 阅读全文
posted @ 2018-07-13 08:38 小蒟蒻yyb 阅读(208) 评论(0) 推荐(0) 编辑