![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
一般DP
文章平均质量分 50
ZigZagK
一个蒟蒻。
展开
-
【最短路->DP】SPOJ(ACPC13)[Increasing Shortest Path]题解
题目概述有一张n个点m条边的图,给出Q个询问,每个询问为x,y,c表示求x->y的最小权值,但要满足如下条件: 1.不能走超过c条边。 2.走过的边的权值必须严格递增(保证给出的边的权值没有重复)。解题报告由于我们要满足路径边权递增,所以会想到给所有边按照边权排个序。然后我们依次将边加入图中,这样就可以保证路径边权是递增的。 那么在这个想法的基础上,我们记录f[i][j]表示从起点到达i点走了原创 2017-07-12 16:20:09 · 399 阅读 · 1 评论 -
【DP】NOIP2015Day2T2[子串]题解
解题报告直接DP, f[i][j][k][0/1]f[i][j][k][0/1] 表示 AA 串前 ii 位匹配 BB 串 jj 位,拿出了 kk 个子串, ii 位没选/选了的方案数。好像有三维做法,但是我不会……示例程序#include<cstdio>#include<cstring>using namespace std;const int maxn=1000,maxm=200,MOD=原创 2017-10-23 19:06:06 · 275 阅读 · 0 评论 -
【DP】Codeforces762D[Maximum path]题解
题目概述给出 3×n3\times n 的带权网格,从 (0,1)(0,1) 开始走,一个格子只能走到相邻(上下左右)格子且不能被重复走,求到 (2,n)(2,n) 的最大权值。解题报告我们会发现如果回头走了两个格子,一定可以被回头走了一个格子(或不回头)的方案替换掉。所以我们只需要考虑回头走了一个格子。考虑DP,定义 f[0/1/2/3][j]f[0/1/2/3][j] 表示第 jj 列走完,目前原创 2017-10-25 11:36:19 · 339 阅读 · 0 评论 -
【剩余类+贪心+DP】Codeforces571B[Minimization]题解
题目概述给出 nn 个数和 KK ,现在需要将 nn 个数组成序列,求 ∑n−Ki=1|Ai−Ai+K|\sum_{i=1}^{n-K}|A_i-A_{i+K}| 的最小值。解题报告+K+K ……想到剩余类,这样的话 nn 个数就只有 KK 个剩余类。同时观察到这些剩余类的个数只有 ⌊n−1k⌋\lfloor{n-1\over k}\rfloor 和 ⌊n−1k⌋+1\lfloor{n-1\over原创 2017-10-25 15:05:45 · 327 阅读 · 0 评论 -
【DP】BZOJ1084(SCOI2005)[最大子矩阵]题解
题目概述有一个 n×mn\times m ( m≤2m\le 2 )的矩阵,选出其中 kk 个子矩阵,使得这 kk 个子矩阵分值之和最大。选出的 kk 个子矩阵不能相互重叠。解题报告因为只有两列……所以随便定义一下就行了。定义 f[i][s][k]f[i][s][k] 表示前 ii 行,第 ii 行的状态为 ss ,选了 kk 个子矩阵的最优解,状态有:00 :不选第 ii 行。11 :选第 i原创 2017-11-05 16:07:09 · 330 阅读 · 0 评论 -
【DP】RQNOJ107[Ural的鹰蛋实验]题解
题目概述经典的鹰蛋问题,就因为懒所以不写了。解题报告不知道大家第一想法是不是二维DP,反正我不是……2015年,当我还是普及组大菜鸡(现在是提高组大菜鸡)时,我看到了这道题。然后根本不会,直到教练下发题解……题解上是……没错……区间DP f[L][R][egg]f[L][R][egg] ……(黑历史完……)显然所有区间都是等价的,唯一重要的是区间长度,所以可原创 2017-11-02 21:51:43 · 529 阅读 · 2 评论 -
【二分+DP】BZOJ1044(HAOI2008)[木棍分割]题解
题目概述有 n" role="presentation">nnn 根木棍, 第 i" role="presentation">iii 根木棍的长度为 Li" role="presentation">LiLiL_i , n" role="presentation">nnn 根木棍依次连结了一起, 总共有 n−1" role="presentation">n−1n−1n-1 个连接处原创 2018-02-04 23:01:12 · 1192 阅读 · 0 评论 -
【DP】BZOJ2298(HAOI2011)[problem a]
题目概述有 nnn 个人,第 iii 个人说有 aiaia_i 人排名在他前面, bibib_i 个人排名在他后面(可以有相同排名),问最少有几人说谎。 解题报告第 iii 个人的排名范围是 [ai+1,n−bi][ai+1,n−bi][a_i+1,n-b_i] ,aaa 不同或 bbb 不同的两个人都说真话时区间不能有冲突(否则两人可能为相同排名,这是不可能的)。所以我们可以DP...原创 2018-02-11 10:48:44 · 326 阅读 · 0 评论 -
【LIS】BZOJ1046(HAOI2007)[上升序列]题解
题目概述给出 {an}" role="presentation">{an}{an}\{a_n\} ,求下标字典序最小的上升子序列。解题报告水题吧……先求出 fi" role="presentation">fifif_i 表示以 i" role="presentation">iii 为起点的最长上升子序列,然后只需要先找出第一个 fans1>x" role="presentat原创 2018-02-06 23:03:16 · 369 阅读 · 0 评论 -
【AC自动机+DP】BZOJ1030(JSOI2007)[文本生成器]题解
题目概述如果一篇文章中至少包含给出 nn 个单词中的一个单词,那么我们说这篇文章是可读的。求长度为 mm 字符集只有 [A,Z][A,Z] 的文本中可读文本的数量。解题报告AC自动机+DP套路题……由于直接求可读文本比较困难,正难则反,我们求不可读文本的数目 ansans ,那么 26m−ans26^m-ans 就是答案。先将 nn 个模板串建成AC自动机,然后 f[i][j]f[i][j] 表示文原创 2017-10-22 18:56:54 · 338 阅读 · 0 评论 -
【DP】51Nod1354[选数字]题解
题目概述给出 nn 个数和 KK ,选出 nn 个数中若干个数使得乘积恰好为 KK ,求方案数。解题报告我太菜了,都是JZdalao教我题目的……刚开始我想拆分素因子然后背包……发现直接爆炸。实际上我们预处理出 KK 的因子,然后定义 f[i][j]f[i][j] 表示前 ii 个数组成 KK 的第 jj 个因子的方案数(将因子由小到大排序)就可以了。至于确定因子标号,我用了二分原创 2017-10-28 21:19:15 · 269 阅读 · 0 评论 -
【DP】BZOJ4300[绝世好题]题解
BZOJ4300题解。原创 2017-05-05 08:53:27 · 546 阅读 · 1 评论 -
【DP+KMP+矩阵乘法】BZOJ1009(HNOI2008)[GT考试]题解
BZOJ1009题解。原创 2017-05-03 08:32:38 · 622 阅读 · 0 评论 -
【DP】LibreOJ NOI Round #1[A.接竹竿]题解
题目概述有n张牌,每张牌有一种花色c和一个权值v。如果两张牌花色相同就可以把两张牌间的牌都拿光(包括这两张)并得到所有牌的权值加和。求最大权值。解题报告一看就是线性DP啊,定义f[i]表示前i个的最优解,那么转移方程就是f[i]=max{f[j-1]-sum[j-1]+sum[i]|c[i]=c[j]}。然后我们发现f[j-1]-sum[j-1]只和j有关,与i无关,所以我们只需要记录MAX[i]表原创 2017-07-07 14:50:19 · 839 阅读 · 2 评论 -
【DP+组合数学】Codeforces559C[Gerald and Giant Chess]题解
题目概述nn 行 mm 列的过河卒问题,但有 kk 个障碍物(不能经过),求方案数。解题报告哇,最近考到这道题,考试时完全不会做啊,考完后发现很水啊Orz。 朴素的障碍物过河卒问题直接刷递推,效率是 O(n×m)O(n\times m) ,扛不住。而 kk 比较小,显然要在障碍物上搞事情。 先将障碍物排序,定义 f[i]f[i] 表示前 ii 个障碍物只过第 ii 个障碍物的方案数。我们认为 (原创 2017-07-30 15:37:42 · 360 阅读 · 0 评论 -
【贪心+DP】BZOJ1899(Zjoi2004)[Lunch 午餐]题解
BZOJ1899题解。原创 2017-05-22 21:37:25 · 1177 阅读 · 3 评论 -
【反序表+DP】51Nod1020[逆序排列]题解
题目概述求 nn 的排列中逆序对数为 KK 的方案数。解题报告好像在水博客?如果知道反序表这种东西这就是道很简单的DP了。定义 f[i][j]f[i][j] 表示反序表前 ii 个的和为 KK 的方案数,那么 f[i][j]=∑min(j,i−1)k=0f[i−1][j−k]f[i][j]=\sum_{k=0}^{min(j,i-1)}f[i-1][j-k] ,记录一下前缀和就能够优化到 O(nK)原创 2017-09-09 14:03:02 · 370 阅读 · 0 评论 -
【DP+树状数组 or 贪心】Codeforces527D[Clique Problem]题解
题目概述给出平面上 nn 个点 xix_i ,每个点有个权值 wi(wi>0)w_i(w_i>0) ,当 |xi−xj|≥wi+wj|x_i-x_j|\ge w_i+w_j 时 i→ji\to j 有条边。求最大团(最大完全子图)。解题报告先将点按照位置排序,然后会发现若 k<j<ik<j<i 且 kk 能到 jj , jj 能到 ii ,则 kk 一定能到 ii 。证明很简单:xj−xk≥wk+w原创 2017-10-18 10:53:04 · 301 阅读 · 0 评论 -
【DP+矩阵乘法】BZOJ1875(SDOI2009)[HH去散步]题解
题目概述HH有个智障的习惯,喜欢饭后1073741824步走。给出 nn 个点 mm 条双向边,求从 AA 开始走 tt 步到 BB 的方案数。ps:走过一条边后不能立刻返回。解题报告直接DP,由于不能立刻返回,所以定义 f[i][j]f[i][j] 表示第 ii 步走到第 jj 条边上的方案数。然后发现 tt 太大了,而且每次转移固定,所以用矩阵乘法优化。但是这种简单题我傻X一样WA了3次QAQ。原创 2017-10-10 21:02:17 · 257 阅读 · 0 评论 -
【LCS】BZOJ2423(HAOI2010)[最长公共子序列]题解
题目概述求两个字符串 AAA 和 BBB 的最长公共子序列以及最长公共子序列的数量。解题报告定义 f[i][j]f[i][j]f[i][j] 表示 AAA 的前 iii 位与 BBB 的前 jjj 位的最长公共子序列,g[i][j]g[i][j]g[i][j] 表示最长公共子序列的方案数。第一问没话说,第二问要注意重复的情况:当 Ai=BjAi=BjA_i=B_j 时,直接从三个状...原创 2018-02-24 10:30:52 · 685 阅读 · 0 评论