题面: 传送门 思路: 这道题有个结论: 把两棵树$\left[i,k\right]$以及$\left[k+1,j\right]$连接起来的最小花费是$x\left[k+1\right]-x\left[i\right]+y\left[k\right]-y\left[j\right]$ 然后就明显可以区间dp了 设$dp\left[i\right]\left[j\right]$表示把闭区间$\left[i,j\right]$中的点连起来的最小花费,然后定义上面那个最小花费为$w\left(i,k,…
题意:给定一些点(xi,yi)(xj,yj)满足:i<j,xi<xj,yi>yj.用下面的连起来,使得所有边的长度最小? 题解:直接给出吧 f[i][j]=min(f[i][k]+f[k+1][j]+cost(i,j) cost(i,j)=a[k].y-a[j].y+a[k+1].x-a[i].x; 明显了吧 证明一下,搞一搞,四边形性质就出来了,模板题吧. #include<cstdio> #include<cstring> #include<iostre…
题意:给定一些点(xi,yi)(xj,yj)满足:i<j,xi<xj,yi>yj.用下面的连起来,使得所有边的长度最小? 思路:考虑用区间表示,f[i][j]表示将i到j的点连起来的最小代价. 那么f[i][j]=min(f[i][k]+f[k+1][j]+cost(i,j) cost(i,j)=a[k].y-a[j].y+a[k+1].x-a[i].x; 看起来和四边形不等式有关系,我们需要证明以下(a<b<c<d) cost(a,c)+cost(b,d)<=c…
构造方法肯定是把相邻两个点连到一起,变成一个新点,然后再把新点和别的点连到一起.... 设f[i,j]为把第i到j个点都连到一起的代价,那么答案就是f[1,n] f[i,j]=min{f[i,k]+f[k+1,j]+x[k+1]-x[i]+y[k]-y[j]} (画一画就知道了) 然后显然满足四边形不等式(怎么就显然了??) #include<cstdio> #include<cstring> #include<algorithm> #include<vector…
Problem Description Consider a two-dimensional space with a set of points (xi, yi) that satisfy xi < xj and yi > yj for all i < j. We want to have them all connected by a directed tree whose edges go toward either right (x positive) or upward (y…
原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=3516 题意: 大概就是给你个下凸包的左侧,然后让你用平行于坐标轴的线段构造一棵树,并且这棵树的总曼哈顿距离最短 题解: 很容易得到转移方程: $$dp[i][j]=min \{ dp[i][k-1]+dp[k][j] + dis(uni(i,k-1),uni(k,j))\}$$ 其中$dp[i][j]$表示从$i$到$j$的最优解,$dis(i,j)$表示$i$和$j$之间的曼哈顿距离,$uni(i…
题目链接 贴个教程: 四边形不等式学习笔记 \(Description\) 给出平面上的\(n\)个点,满足\(X_i\)严格单增,\(Y_i\)严格单减.以\(x\)轴和\(y\)轴正方向作边,使这\(n\)个点构成一棵树,最小化树边边的总长. \(Solution\) 考虑有两棵构造好的树,要合并这两棵树,要从右边的树中找一个最优点连到左边的树上 不难想到区间DP(真的想不到==) \(f[i][j]\)表示将\([i,j]\)合并为一棵树的最小代价,那么有 \(f[i][j] = \min…
设d(i, j)为连通第i个点到第j个点的树的最小长度,则有状态转移方程: d(i, j) = min{ d(i, k) + d(k + 1, j) + p[k].y - p[j].y + p[k+1].x - p[i].x } 然后用四边形不等式优化之.. #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #include <map> #d…
(自己的理解:首先考虑单调队列,不行时考虑斜率,再不行就考虑不等式什么的东西) 当dp的状态转移方程dp[i]的状态i需要从前面(0~i-1)个状态找出最优子决策做转移时 我们常常需要双重循环 (一重循环跑状态 i,一重循环跑 i 的所有子状态)这样的时间复杂度是O(N^2)而 斜率优化或者四边形不等式优化后的DP 可以将时间复杂度缩减到O(N) O(N^2)可以优化到O(N) ,O(N^3)可以优化到O(N^2),依次类推 斜率优化DP和四边形不等式优化DP主要的原理就是利用斜率或者四边形不等…
嗯......四边形不等式的确长得像个四边形[雾] 我们在dp中,经常见到这样一类状态以及转移方程: 设$dp\left[i\right]\left[j\right]$表示闭区间$\left[i,j\right]$中的最小值/最大值/和值 然后有这样的转移: $dp\left[i\right]\left[j\right]=min\left(dp\left[i\right]\left[k-1\right]+dp\left[k\right]\left[j\right]+w\left(i,j\righ…