BZOJ3156 防禦準備 斜率優化

2022-05-21 17:24:10 字數 639 閱讀 7238

第一行為乙個整數n表示戰線的總長度。

第二行n個整數,第i個整數表示在位置i放置守衛塔的花費ai。

共乙個整數,表示最小的戰線花費值。

102 3 1 5 4 5 6 3 1 2

181<=n<=10^6,1<=ai<=10^9

題解:一眼看出斜率優化dp,先列出方程再說

令f[i]表示在i處放置守衛塔,且i左面的格仔都被保護時的最小花費。

$f[i]=min(f[j]+\frac +a[i]) (0\le j < i)$

整理一下,發現求的是下凸包,且點的座標單調不減

題目太大導致不能再加了好氣~

#include #include #include #define y(_) (f[_]+_*(_+1)/2)

using namespace std;

typedef long long ll;

const int maxn=1000010;

int n;

ll q[maxn],h,t;

ll a[maxn],f[maxn];

int main()

printf("%lld",f[n]);

return 0;

}

bzoj 3156 防禦準備 斜率優化 DP

傳送門 第一行為乙個整數n表示戰線的總長度。第二行n個整數,第i個整數表示在位置i放置守衛塔的花費ai。共乙個整數,表示最小的戰線花費值。10 2 3 1 5 4 5 6 3 1 2 181 n 10 6,1 ai 10 9 斜率優化 dp 因為最後乙個一定為守衛塔,所以輸入時預處理到過來,接下來說...

BZOJ3156 防禦準備(斜率優化dp)

題目 我是超連結 題解 woc!調了一大節課,還對拍樣程 完全沒有問題啊,拍了一晚上都不帶錯的 結果看好數量級之後強轉longlong才a了 第一種解法 兩個點之間的距離是 i j i j 1 2 方程 f i min f j i j i j 1 2 a i include include defi...

BZOJ3156 防禦準備 斜率優化dp

time limit 10 sec memory limit 512 mb submit 2207 solved 933 submit status discuss 第一行為乙個整數n表示戰線的總長度。第二行n個整數,第i個整數表示在位置i放置守衛塔的花費ai。共乙個整數,表示最小的戰線花費值。10...