APIO 2010 特別行動隊

2022-05-04 23:33:11 字數 1034 閱讀 3271

[題目鏈結]

[演算法]

設前i個士兵"修正"後的最大戰鬥力為fi

令sumi表示x的字首和

顯然 , 有狀態轉移方程 : fi = max

對該式進行化簡 , 得 :

fi = max

令yj = fj + asumj ^ 2 , xj = sumj

則 : fi = max

那麼yj = xj + (2asumi + b) + fi - asumi ^ 2 - bsumi - c

顯然我們要做的是最大化截距

2asumi + b單調遞減 , xi單調遞增 , 維護乙個上凸殼即可

時間複雜度 : o(n)

[**]

#includeusing

namespace

std;

const

int n = 1000010

;typedef

long

long

ll;typedef

long

double

ld;typedef unsigned

long

long

ull;

intn , l , r;

ll a , b , c;

intq[n];

ll f[n] , sum[n] , x[n] , y[n];

template

inline void chkmax(t &x , t y)

template

inline void chkmin(t &x , t y)

template

inline void read(t &x)

intmain()

f[q[l = r = 1] = 0] = 0

;

for (int i = 1; i <= n; i++)

printf(

"%lld\n

", f[n]);

return0;

}

APIO2010 特別行動隊

你有一支由 n 名預備役士兵組成的部隊,士兵從 1 到 n 編號,要將他們拆分 成若干特別行動隊調入戰場。出於默契的考慮,同一支特別行動隊中隊員的編號 應該連續,即為形如 i,i 1,i k i,i 1,i k 的序列。編號為 i 的士兵的初始戰鬥力為 xi 一支特別行動隊的初始戰鬥力 x 為隊內 ...

APIO2010 特別行動隊

dp方程 dp i max dp i dp j a sum i sum j 2 b sum i sum j c 暴力還是可以過一些點的 不止20pts 甚至有人說他暴力水過去了。我們現在考慮正解,正解還是斜率優化。維護乙個上凸包qwqwq 設 dp i 表示到士兵i所能達到的最大戰力,sum i 表...

APIO2010 特別行動隊

2017 09 10 你有一支由 n 名預備役士兵組成的部隊,士兵從 1 到 n 編號,要將他們拆分 成若干特別行動隊調入戰場。出於默契的考慮,同一支特別行動隊中隊員的編號 應該連續,即為形如 i,i 1,i k i,i 1,i k 的序列。編號為 i 的士兵的初始戰鬥力為 xi 一支特別行動隊的初...