bzoj 3675 Apio2014 序列分割

2021-09-10 13:40:56 字數 633 閱讀 8148

這題依舊是斜率優化dp。

首先我們可以發現,它的分割順序對答案沒有影響:

假設我們要將一塊分為三部分,每部分的和分別為a,b,c

a * (b+c)+b * c=a * b+a * c+b * c

(a+b) * c+a * b=a * c+b * c+a * b

所以,我們可以按順序分了。

dp式:

斜率優化,我們可以得出:

上標:

#include

#define db double

#define ll long long

#define n 100010

using namespace std;

int n,k,g[n]

,l,len,x,las;

ll f[2]

[n],a[n]

;inline

intread()

db solve

(int x,

int y)

intmain()

las=x;

}printf

("%lld\n"

,f[las]

[n])

;return0;

}

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的序列 也就是一開始得到...