在一些动态规划中状态转移方程是这样的: $m[i,j]=\min_{i < k \leq j}\left \{ m[i,k-1]+m[k,j]+c[i,j] \right \}$ 显而易见,这种方法的时间复杂度是$O(n^{3})$,如何去优化呢? 四边形不等式 通过四边形不等式的优化,可以进一步限 ...
分类:
其他好文 时间:
2020-03-01 00:01:50
阅读次数:
72
区间DP模板 模板题:poj1651,hdu4632 区间dp,就是在区间上进行动态规划,求解一段区间上的最优解。主要是通过合并小区间的最优解,进而得出整个大区间上最优解的dp算法。 具体操作 枚举区间长度len为每次分割成的小区间长度(由短到长不断合并), 中层枚举该长度下可以的起点(终点即为起点 ...
分类:
其他好文 时间:
2020-02-24 15:15:03
阅读次数:
82
Description "题库链接" 给定一个序列 $a$,要把它分成 $k$ 个子段。每个子段的费用是其中相同元素的对数。求所有子段的费用之和的最小值。 $2 \leq n \leq 10^5,2 \leq k \leq \min(n,20),1 \leq a_i \leq n$ Solution ...
分类:
其他好文 时间:
2020-02-21 18:11:35
阅读次数:
72
给出伪代码:(可以看出时间复杂度为O(n^3)) 1 for(int len=1;len<=n;len++){///len为区间长度 2 for(int l=1;l<=n-len+1;l++){ 3 int r=l+len-1; 4 for(int k=l;k<r;k++){ 5 m[l][r]=m ...
分类:
其他好文 时间:
2020-02-02 01:20:45
阅读次数:
68
区间DP的主要思想就是先在小区间得到最优解,然后再利用小区间的最优解合并求大区间的最优解。 动态转移方程一般为$dp[i][j]=opt(dp[i][k]+dp[k+1][j]+cost[i][j])$ 经典例题:取石子问题很容易根据动态转移方程得出$O(n^3)$的解法,但是也可以通过四边形不等式 ...
分类:
其他好文 时间:
2020-01-28 23:05:43
阅读次数:
74
HDU 3516 Tree Construction 好久没更博客了 CSP 2019 凉凉。。 这个题看起来就很像区间dp,可以写出 $ dp[i][j] = max\{dp[i][k]+dp[k+1][r]+x_{k+1} x_i+y_k y_r\} $ 就是考虑 $ [i,j] $ 这个区间, ...
分类:
其他好文 时间:
2019-12-07 16:36:09
阅读次数:
100
单调队列&单调栈: 有手就行.jpg 四边形不等式: 若$w(i,j)$满足$\forall a\le b ...
分类:
其他好文 时间:
2019-10-23 20:06:53
阅读次数:
102
线性DP 背包 区形DP 树形DP 环形与后效性处理 状态压缩DP 倍增优化DP 数据结构优化DP 单调队列优化DP 斜率优化 四边形不等式 计数类DP 数位统计DP 总结与练习 ...
分类:
其他好文 时间:
2019-10-10 12:50:49
阅读次数:
79
四边形不等式 函数w满足 1: 区间包含的单调性,对于$x1 dp[i][j]){ dp[i][j] = val; } } } } ans2 = dp[1][n]; for(int i=1;i 1]; // dis只增加了右端点到中间点的距离 } } for(int i=1;ii; j){ // 当 ...
分类:
其他好文 时间:
2019-09-02 23:57:38
阅读次数:
196
一、线性 1.简单示例 (1)LIS问题 (2)LCS问题 (3)数字三角形 二、背包 1.0/1背包 2.完全背包 3.多重背包(二进制拆分) 4.分组背包 三、区间 四、树形 1.背包类 2.二次扫描与换根法 五、环形与后效性处理 六、状态压缩 七、倍增优化 八、数据结构优化 九、单调队列优化 ...
分类:
其他好文 时间:
2019-08-11 17:00:57
阅读次数:
107