BZOJ 3675 Apio2014 序列分割

2021-09-28 10:09:33 字數 868 閱讀 2317

【鏈結】

鏈結【題意】

在這裡輸入題意

【題解】

模擬一下樣例。

會發現。切的順序不影響最後的答案。

只要切點確定了。

答案就確定了。

則設f[i][j]表示前i段,第i段保留到j的最大值。

\(f[i][j] = max(f[i-1][x] + (s[j]-s[x])*(s[n]-s[j]))\)

\(s[i] = a[1] + a[2] +...+a[i]\)

然後還是考慮x < y 且y優於x

balabala最後能得到

\(\frac>s[n]-s[j]\)

而s[n]-s[j]是單調遞減的;

這就能加乙個斜率優化了。

注意這裡是》s[n]-s[j]才y更優。

則佇列的出入隊和經典的斜率優化條件相反。

最後輸出f[k+1][n]就好;

要用滾動陣列。不然會mle.

【錯的次數】

在這裡輸入錯的次數

【反思】

在這裡輸入反思

【**】

#include #define ll long long

using namespace std;

const int n = 1e5,k = 200;

int n,k,h,t,dl[n+10];

ll a[n+10],f[2][n+10],s[n+10];

double ju(int i,int x,int y)

int main()

}printf("%lld\n",f[(k+1)&1][n]);

return 0;

}

bzoj3675 APIO2014 序列分割

time limit 40 sec memory limit 128 mb submit 1468 solved 607 submit status discuss 小h最近迷上了乙個分隔序列的遊戲。在這個遊戲裡,小h需要將乙個長度為n的非負整數序列分割成k 1個非空的子串行。為了得到k 1個子序列...

BZOJ3675 Apio2014 序列分割

portal 根據乘法分配律,其實最後答案就是分割後,對每個塊的和,兩兩求乘積加和。那麼割的順序就沒有影響了。遞推式可以寫成 f i k mi n f j k 1 sum i sum j sum j 那麼對於k j且決策k優於決策j f k l 1 sum i sum k sum k f j l 1...

BZOJ 3675 Apio2014 序列分割

bzoj 3675 apio2014 序列分割 小h最近迷上了乙個分隔序列的遊戲。在這個遊戲裡,小h需要將乙個長度為n的非負整數序列分割成k 1個非空的子串行。為了得到k 1個子序列,小h需要重複k次以下的步驟 1.小h首先選擇乙個長度超過1的序列 一開始小h只有乙個長度為n的序列 也就是一開始得到...