dp四邊形優化

2022-06-29 23:57:08 字數 1240 閱讀 9317

如果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...