[題目鏈結]
[演算法]
設前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)
[**]
#includeusingnamespace
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 一支特別行動隊的初...