如果dp[i][j]=min(dp[i][k]+dp[k+1][j]+w[i][j]);且滿足dp[a][c]+dp[b][d]<=dp[a][d]+dp[c][d](a那麼dp具有四邊形不等式性質
另外如果可以證明w[i][j]滿足單調性和四邊形不等式性質,那麼dp也具有四邊形不等式性質
單調性:w[i][j]<=w[i][j+1]<=w[i+1][j+1]
#include#define fi first#define se second
#define inf 0x3f3f3f3f
#define lnf 0x3f3f3f3f3f3f3f3f
#define fio ios::sync_with_stdio(false);cin.tie(0);cout.tie(0)
#define pqueue priority_queue
#define new(a,b) memset(a,b,sizeof(a))
const
double pi=4.0*atan(1.0
);const
double e=exp(1.0
);const
int maxn=1e6+8
;typedef
long
long
ll;typedef unsigned
long
long
ull;
//typedef pairp;
const ll mod=1e9+7
;const ull base=1e7+7
;using
namespace
std;
ll dp[
2008][2008
];ll s[
2008][2008
];ll a[
2008
];int
main()
n*=2
;
for(int i=1;i<=n;i++)
memset(dp,lnf,
sizeof
(dp));
for(int i=1;i<=n;i++)
for(int i=n;i>=1;i--)}}
}n/=2
; ll ans=lnf;
for(int i=1;i<=n;i++)
printf(
"%lld\n
",ans);
}
四邊形優化dp小結
在本蒟蒻開始亂扯之前,先推薦兩篇部落格,有更詳細清晰的講解,這兒就不說那麼多了,畢竟叫 小結 對吧。下面進入正題 一下所有的把min取成max,把 取成 也成立 對於乙個狀態轉移方程dp i j min 1.當函式w i,j 滿足 w a,c w b,d w b,c w a,d 且a b c d 時...
DP的四邊形優化
1 狀態轉移方程如下 m i,j 表示對應i,j情況下的最優值。w i,j 表示從i到j的代價。例如在合併石子中 m i,j 表示從第i堆石子合併到j堆石子合併成一堆的最小代價。w i,j 表示從第i堆石子到第j堆石子的重量和。2 函式w滿足區間包含的單調性和四邊形不等式 1 假如函式w滿足上述條件...
四邊形優化
匆匆忙忙搞了一下四邊形優化,也就是做了幾道入門題而已 四邊形不等式詳解 反正我就記住這句話 判斷w是否為凸即判斷 w i,j 1 w i,j 的值隨著i的增加是否遞減 hdu 2829 include include include using namespace std define maxn 1...