随笔分类 - H-动态规划=================
摘要:Link: BZOJ 4060 传送门 Solution: 可以发现字符串间的关系可以构成一棵树 于是我们先用字符串哈希建树,再树形$dp$即可 设$dp[i][j]$为第$i$个节点从$P$字符串的第$j$为开始匹配的失配位置, 则有$dp[i][j]=dp[ch[i][1]][dp[ch[i][
阅读全文
摘要:Link: BZOJ 1794 传送门 Solution: IOI2008官方题解:传送门 要求序号,其实就是算字典序比其小的序列个数 从而使用数位$dp$的思想来解题,关键在于维护序列要$balance$这个条件 可以将$P$看作$-1$,而将$L$看作$+1$,最终要保证整个序列在一个宽最多为2
阅读全文
摘要:Link: BZOJ 1799 传送门 Solution: 一句话的题目,看得爽,做得烦 一般这类和数位相关的都是数位$dp$吧 不过一开始还是感觉不太可做,毕竟每个数模数不同 但要发现,模数最高也只可能为$9*19=171$, 于是只要将数按照他们的数位和(即模数)分类计算即可 这样便暴力解决了模
阅读全文
摘要:Link: BZOJ 3233 传送门 Solution: 在本蒟蒻看来算是一道比较神的$dp$了 一开始转移方程都没看出来…… 首先,如果确定了最大面值,是能推出其他面值的所有可能值的 从而发现最大面值能由较小的面值转移过来: $dp[i]=min\{ dp[i/j]-sum\{ a[k]/i*(
阅读全文
摘要:Link: BZOJ 3209 传送门 Solution: 首先,可以将1的个数相同的项合并 设$f[i]$为二进制中1的个数恰好为$i$的数的个数, 则所求为$1^{f[1]}*2^{f[2]}*3^{f[3]}*4^{f[4]}..........*n^{f[n]}$ 接下来,感觉$f[i]$非
阅读全文
摘要:Link: BZOJ 1806 传送门 Solution: 为了使状态包含每个节点前所有必须的信息: 设$dp[i][a1][a2][b1][b2]$为配送到第$i$个,一厂前两个为$a1,a2$,二厂前两个为$b1,b2$时的最大权值, 每次向一厂添加/二厂添加转移。 要使用滚动数组,注意对每种情
阅读全文
摘要:Link: BZOJ 1037 传送门 Solution: 由于对任意一段都有要求,于是我们对于所有前缀考虑其后缀不超过$k $即可: 设$dp[i][j][x][y]$为前$i$个人中有$j$个男孩,且后缀中男女最大相差$x$,女男最大相差$y$时的方案数 每次向添加女孩/添加男孩转移。 注意:如
阅读全文
摘要:Link: POJ 1185 传送门 Solution: 看大家都说是一道状压$dp$基础题,结果我还是卡题了 发现决策第$i$行时,要同时考虑$i-1$和$i-2$行,因此状态中要包含两个“行”状态位 但$O(1024^3*100)$的复杂度明显不行啊,于是我就在这卡住了…… 其实可以发现仅考虑“
阅读全文
摘要:Link: POJ1935 传送门 Solution: 一道吓唬人的水题 注意这是一棵树,两点间仅有唯一的路径! 于是每个“关键点”和起点只有一条路径,想去起点另一棵子树上的节点必须要回到起点 如果必须要回到起点,答案$res$就是除去无用边后整棵树总距离$*2$, 因为不必回到起点,最终结果为$r
阅读全文
摘要:Link: POJ 2397 传送门 Solution: 设$dp[i][j]$表示第$i$步走到$j$高度时经过的最高高度 分向上走和向下走两种方式转移即可 注意记录路径,最后输出时要逆序输出 (逆序输出时可以考虑利用递归方式输出) Code:
阅读全文
摘要:Link: POJ 2373 传送门 Solution: 一开始想错方向的一道简单$dp$,不应该啊…… 我一开始的想法是以$cows' ranges$的节点为状态来$dp$ 但明显一个灌溉的区间的两边不一定都在$cows's ranges$上, 因此应该以长为$L$的$field$上的每一个偶数节
阅读全文
摘要:Link: POJ 3378 传送门 Solution: 按序列长度$dp$, 设$dp[i][j]$为到第$i$个数,符合要求的序列长度为$j$时的序列个数, 易得转移方程:$dp[i][j]=\sum_{k=1}^{i-1} dp[k][j-1] (dat[k]<dat[i])$ 用树状数组按$
阅读全文
摘要:Link: POJ 2329 传送门 Solution: 比较明显的$dp$,但爆搜好像也能过 用多个方向$dp$来解决此题,最后汇总答案即可 一开始我写了4个,但后来发现只要相反的2个方向即可,同时不用分别记录答案,直接不断更新答案即可 要特别注意对特例的判断: 不能只判断其最近距离相同且最近点相
阅读全文
摘要:Link: POJ 1739 传送门 Solution: 这题除了一开始的预处理,基本上就是插头$dp$的模板题了 由于插头$dp$求的是$Hamilton$回路,而此题有起点和终点的限制 于是可以构造一条$[n,1]->[n+2,1]->[n+2,m]->[n,m]$的路径,正好只添加一条$S->
阅读全文
摘要:Link: BZOJ 2734 传送门 Solution: 真是奥妙重重的建模啊..... 我们发现$x,2*x,3*x$这些数太分散了,难以处理 于是我们构建这样的表格: x 3x 9x 27x.... 2x 6x 18x 54x... 4x 12x 36x 108x... ... ..... .
阅读全文
摘要:Link: BZOJ 4057 传送门 Solution: 一道比较基础的状压DP 看到$n<=20$,状态转移与顺序相关,就可以开心地状压了 1表示破产,0表示未破产,不断扩展破产的集合即可 Code:
阅读全文
摘要:Link: BZOJ 4008 传送门 Solution: 这题的约束: (1)若一张牌发动了技能,那么将结束此回合。 (2)若一张牌发动过技能那么它不能再发动技能。 这意味着不能以回合数为状态来进行$dp$ 由(2):一张牌最多发动一次技能,于是只要能算出每张牌的发动概率再统计即可 因此需要考虑经
阅读全文
摘要:Link: BZOJ 3997 传送门 Solution: 这题是一个比较明显的最小链覆盖,只不过还给每条链加上了权值 $Dilworth$定理:最小链覆盖数=最长反链长度 一般用$Dilworth$定理都是求最长反链,这题算是逆运用吧 发现能构成反链的两点一定是具有“左上、右下”的位置关系, 于是
阅读全文
摘要:Link: BZOJ 4033 传送门 Solution: 此题用到了计算贡献的方法, 将 多条路径的路径和 $->$ $\sum_{i=1}^{n-1} w[i]*cnt[i]$ 这样我们由找出所有路径再计算转化成了对每条边计算其的贡献 由于所有节点只用2种选择,接下来就是比较套路的树形DP了 设
阅读全文
摘要:Link: BZOJ 3573 传送门 Solution: 一道语文题 转化后的题意就是使得每个节点的权值都等于 父亲节点的权值/儿子数 的最小操作数 能发现一条重要的性质:只要一个节点确定,所有节点的权值都确定了 于是我们只要枚举$1……n$每个节点权值不变, 算出根节点$root$的权值出现过的
阅读全文