随笔分类 -  动态规划-dp

摘要:题目链接 "BZOJ3235" 题解 求出每个点为顶点,分别求出左上,左下,右上,右下的矩形的个数$g[i][j]$ 并预处理出$f[i][j]$表示点$(i,j)$到四个角的矩形内合法矩形个数 就可以容斥计数啦 枚举顶点$(i,j)$,乘上另一侧矩形个数,如图: 但是会算重,对于这样的情况 减去即 阅读全文
posted @ 2018-07-12 21:36 Mychael 阅读(327) 评论(0) 推荐(0)
摘要:题目链接 "BZOJ3193" 题解 注意$key$是小于 第一问,显然按高度降序排序,逐个插入 如果高度各不相同,那么之前插入的都比当前插入的$i$大,可插入的位置个数就确定了 由于存在高度相同的情况,将key作为第二关键字升序排序 这样后面插入的就一定能插入前面插入的之后,统计一下之前插入了$c 阅读全文
posted @ 2018-07-10 10:24 Mychael 阅读(224) 评论(0) 推荐(0)
摘要:题目链接 "BZOJ3688" 题解 将点排序 设$f[i][j][0|1]$表示以第$i$点结尾,有$j$段,最后一段上升或者下降的方案数 以上升为例 $$f[i][j][0] = \sum\limits_{k = 1}^{i 1}\sum\limits_{y_k include include 阅读全文
posted @ 2018-07-03 20:33 Mychael 阅读(188) 评论(0) 推荐(0)
摘要:题目链接 "uoj132" 题解 真是一道大码题,,,肝了一个上午 老司机的部分是一个$dp$,观察点是按$y$分层的,而且按每层点的上限来看可以使用$O(nd)$的$dp$,其中$d$是每层的点数 我们设$f[i]$表示从$i$点进入该层,直到走完为止所经过的最多点的数量,我们把原点也看做一棵树, 阅读全文
posted @ 2018-06-27 12:18 Mychael 阅读(249) 评论(0) 推荐(0)
摘要:题目链接 "loj2538" 题解 比较明显的是,由于强化牌倍数大于$1$,肯定是能用强化牌尽量用强化牌 如果强化牌大于等于$k$,就留一个位给攻击牌 所以我们将两种牌分别排序,企图计算$F(i,j)$表示$i$张强化牌选出最强的$j$张的所有方案的倍数和 $G(i,j)$表示从$i$张攻击牌选出最 阅读全文
posted @ 2018-06-23 08:32 Mychael 阅读(192) 评论(0) 推荐(0)
摘要:题目链接 "BZOJ2216" 题解 学过高中数学都应知道,我们要求$p$的极值,参变分离为 $$h_j + sqrt{|i j|} h_i \le p$$ 实际上就是求$h_j + sqrt{|i j|} h_i$的最大值 就可以设$f[i]$表示对$i$最大的该式的值 绝对值通常要去掉,一般可以 阅读全文
posted @ 2018-06-21 19:06 Mychael 阅读(164) 评论(0) 推荐(0)
摘要:题目链接 "BZOJ1264" 题解 平凡的$LCS$是$O(n^2)$的 显然我们要根据题目的性质用一些不平凡的$LCS$求法 这就很巧妙了,, 我们考虑$A$序列的每个位置可能匹配$B$位置的哪些位置 而$A$序列中匹配的位置一定是单调递增的 那么我们就把$A$的每个位置所能匹配$B$的位置找出 阅读全文
posted @ 2018-06-19 20:12 Mychael 阅读(218) 评论(0) 推荐(0)
摘要:题目链接 "洛谷P4608" 题解 建个序列自动机后 第一问暴搜 第二问dp + 高精 设$f[i][j]$为两个序列自动机分别走到$i$和$j$节点的方案数,答案就是$f[0][0]$ 由于空间卡的很紧,高精不仅要压位,还要动态开内存 由于有些状态是没用的,记忆化搜索以减少内存损失 C++ inc 阅读全文
posted @ 2018-06-18 22:00 Mychael 阅读(332) 评论(0) 推荐(0)
摘要:题目链接 "BZOJ3782" 题解 我们把终点也加入障碍点中,将点排序,令$f[i]$表示从$(0,0)$出发,不经过其它障碍,直接到达$(x_i,y_i)$的方案数 首先我们有个大致的方案数${x_i + y_i \choose x_i}$ 但是中途可能会经过一些其它障碍点,那么就减去 所以 $ 阅读全文
posted @ 2018-06-16 17:31 Mychael 阅读(197) 评论(0) 推荐(0)
摘要:题目链接 "BZOJ2553" 题解 话说在前,此题卡精度,最好开long double 先建$AC$自动机 求期望,逆着求,设$f[i][j]$为长度为$i$的串,当前匹配AC自动机$j$节点,之后能产生伤害的期望值 枚举转移,如果转移到一个单词节点,因为产生伤害的单词间不能相连,就直接跳回根节点 阅读全文
posted @ 2018-05-31 10:14 Mychael 阅读(167) 评论(0) 推荐(0)
摘要:题目链接 "BZOJ3427" 题解 容易发现最终序列一定是$\{ 1,0,1\}$组成的 因为如果有一个位置不是,那么这个位置一定大于$1$,那么上一个位置一定为$1$,所以该位置一定加到过$1$。由于$1$已经满足条件,而经分析得大于$1$会使下一个位置的决策不优反劣,所以一定不会大于$1$ 那 阅读全文
posted @ 2018-05-28 10:39 Mychael 阅读(173) 评论(0) 推荐(0)
摘要:题目链接 "洛谷P4591" 题解 设$f[i][j]$表示前$i$个串匹配到位置$j$的方案数,匹配一下第$i$个串进行转移即可 本来写了$hash$,发现没过,又写了一个$KMP$,依旧$WA$,无奈去翻题解,竟然要取模??!! 题面怎么不讲啊,, C++ include include inc 阅读全文
posted @ 2018-05-17 15:18 Mychael 阅读(428) 评论(0) 推荐(0)
摘要:题目链接 "BZOJ4032" 题解 首先膜$hb$ 空手切神题 一问$hash$,二问枚举 三问$trie$树,四问$dp$ 南二巨佬神$hb$ 空手吊打自动机 $orz orz orz orz orz orz orz$ 咳。说正解 要处理子串,直接搬上后缀自动机 要处理子序列,直接搬上序列自动机 阅读全文
posted @ 2018-05-15 11:15 Mychael 阅读(263) 评论(0) 推荐(0)
摘要:题目链接 "BZOJ3594" 题解 dp难题总是想不出来,, 首先要观察到一个很重要的性质,就是每次拔高一定是拔一段后缀 因为如果单独只拔前段的话,后面与前面的高度差距大了,不优反劣 然后很显然可以设出$f[i][j]$表示前$i$个玉米,第$i$棵必须选,且共拔高了$j$次的最大值 由之前的性质 阅读全文
posted @ 2018-05-14 20:48 Mychael 阅读(160) 评论(0) 推荐(0)
摘要:题目链接 "BZOJ3622" 题解 既已开题 ~~那就已经没有什么好害怕的了~~ 由题目中奇怪的条件我们可以特判掉$n k$为奇数时答案为$0$ 否则我们要求的就是糖果大于药片恰好有$\frac{n k}{2} + k$个的方案数,我们记为$K$ 思路1 直接求恰好不好求,想到二项式反演: 如果有 阅读全文
posted @ 2018-05-12 15:00 Mychael 阅读(223) 评论(0) 推荐(1)
摘要:题目链接 "BZOJ1233" 题解 有一个贪心策略:同样的干草集合,底长小的一定不比底长大的矮 设$f[i]$表示$i...N$形成的干草堆的最小底长,同时用$g[i]$记录此时的高度 那么 $$f[i] = min\{f[j]\} \quad [sum[j 1] sum[i 1] \ge f[j 阅读全文
posted @ 2018-05-11 07:08 Mychael 阅读(161) 评论(0) 推荐(0)
摘要:题目链接 "BZOJ1855" 题解 设$f[i][j]$表示第$i$天结束时拥有$j$张股票时的最大收益 若$i \le W$,显然在这之前不可能有交易 $$f[i][j] = max\{f[i 1][j], ap[i] j\} \quad [j \le as[i]]$$ 否则,就有三种选择: ① 阅读全文
posted @ 2018-05-10 14:49 Mychael 阅读(181) 评论(0) 推荐(0)
摘要:题目链接 "BZOJ1487" 题解 就是一个简单的仙人掌最大权独立集 还是不会圆方树 老老实实地树形Dp + 环处理 C++ include include include include include define LL long long int define Redge(u) for (i 阅读全文
posted @ 2018-05-07 19:18 Mychael 阅读(203) 评论(0) 推荐(0)
摘要:题目链接 "loj300" 题解 orz "litble" 膜完题解后,突然有一个简单的想法: 考虑到$2$是质数,考虑Lucas定理: $${n \choose m} = \prod_{i = 1} {\lfloor \frac{n}{2^{i 1}} \rfloor \mod 2^i \choo 阅读全文
posted @ 2018-05-03 19:13 Mychael 阅读(231) 评论(0) 推荐(0)
摘要:题目 小 CC 非常擅长背包问题,他有一个奇怪的背包,这个背包有一个参数 PP ,当他 向这个背包内放入若干个物品后,背包的重量是物品总体积对 PP 取模后的结果. 现在小 CC 有 nn 种体积不同的物品,第 ii 种占用体积为 V_iV i ​ ,每种物品都有无限个. 他会进行 qq 次询问,每 阅读全文
posted @ 2018-04-28 19:28 Mychael 阅读(584) 评论(0) 推荐(0)