洛谷 P3628 APIO2010 特別行動隊

2022-06-01 09:15:07 字數 667 閱讀 2554

將n個士兵分為若干組,每組連續,編號為i的士兵戰鬥力為xi

若i~j士兵為一組,該組初始戰鬥力為\( s = \sum\limits_^xk \),實際戰鬥力\(a * s^2 + b * s + c\)(a,b,c為常數)

求最大實際戰鬥力

\( dp[i] = max(dp[j) + a * (s[i] - s[j]) ^ 2 + b * (s[i] - s[j]) + c \)

然後斜率優化,單調佇列維護

#include using namespace std;

typedef long long ll;

int n, l, h, t, a, b, c;

int q[1000010];

ll sum[1000010], dp[1000010];

ll sqr(ll x)

int s1(int x)

int s2(int x)

int s4(int x)

double calc(int i, int j)

int main()

h = t = 1;

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

printf("%lld\n", dp[n]);

}

洛谷 P3628 APIO2010 特別行動隊

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

P3628 APIO2010 特別行動隊

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

P3628 APIO2010 特別行動隊

轉移方程 f i max f j a s i s j 2 b s i s j c 寫成可以斜率優化的式子 f j a s j 2 b s j c 2 a s i s j f i a s j 2 b s i 然後求 f i 最大值,於是維護上凸包 橫座標單調增,斜率單調減,所以直接上單調佇列即可。in...