hdu 4412 利用單調性的動態規劃

2022-05-22 06:54:15 字數 1172 閱讀 7674

思路:

這題和1227的求法一樣,只不過1227是小資料,暴力下,就能進行預處理。

這題的預處理區間期望cost[i][j]需要利用單調性。

即假使以pos位置為安排的點,那麼這個區間在其左邊的概率為l,右邊的概率為r,總期望為sum。如果將安排點從pos放到pos-1

該區間增加的期望為r*(p[pos].x-p[pos-1].x)

減少的期望為l*(p[pos].x-p[pos-1].x)

如果減少的超過增加的,那麼pos-1就比pos好。

#include#include

#include

#include

#include

#define maxn 1010

using

namespace

std;

double dp[maxn][60

],cost[maxn][maxn];

struct

pointp[maxn];

mapvi;

intmain()

}int cnt=0

; map

::iterator it;

for(it=vi.begin();it!=vi.end();it++)

p[++cnt].x=it->first,p[cnt].p=it->second;

double

l,r,sum;

intpos;

double

t;

for(i=cnt;i>1;i--)

cost[j][i]=sum;}}

for(i=1;i<=cnt;i++)

dp[i][

1]=cost[1

][i];

for(i=1;i<=m;i++)

dp[1][i]=0

;

for(k=2;k<=m;k++)

dp[i][k]=1e20;

for(j=i-1;j>=1;j--)

dp[i][k]=min(dp[i][k],dp[j][k-1]+cost[j+1

][i]);}}

printf(

"%.2lf\n

",dp[cnt][m]);

}return0;

}

利用dispatch once建立單例

無論是愛還是恨,你都需要單例。實際上每個ios或mac os應用都至少會有 什麼是單例呢?wikipedia是如此定義的 在軟體工程中,單例是一種用於實現單例的數學概念,即將類的例項化限制成僅乙個物件的設計模式。或者我的理解是 單例是一種類,該類只能例項化乙個物件。儘管這是單例的實際定義,但在fou...

利用dispatch once建立單例

有些變數只需要初始化一次 如從檔案中讀取配置引數,讀取裝置型號等等 可以使用dispatch once來進行讀取優化,保證只呼叫api一次,以後就只要直接訪問變數即可 無論是愛還是恨,你都需要單例。實際上每個ios或mac os應用都至少會有 什麼是單例呢?wikipedia是如此定義的 在軟體工程...

利用dispatch once建立單例

無論是愛還是恨,你都需要單例。實際上每個ios或mac os應用都至少會有 什麼是單例呢?wikipedia是如此定義的 在軟體工程中,單例是一種用於實現單例的數學概念,即將類的例項化限制成僅乙個物件的設計模式。或者我的理解是 單例是一種類,該類只能例項化乙個物件。儘管這是單例的實際定義,但在fou...