bzoj 3156 防禦準備

2022-08-04 20:57:24 字數 816 閱讀 9322

這個題2333,有乙個情況就是從乙個點i一直山底的,直接計算出答案,乙個是到山頂的,用斜率優化來算,最後答案是兩個加起來(可能會說反)

最後,本蒟蒻來bb一下對斜率優化的理解吧。

其實就是無腦的寫乙個f[i]從f[j]轉移來的式子,在搞乙個j,k乙個大,乙個小,用小(大)於號連起來,變一下形,讓左邊存在未知數(j,k)右邊是關於i的式子

有了式子之後,(因為我太弱,只能隨便理解,如有錯誤,希望大神指出),如果是小於號,肯定是左邊越小越優,(小於號就小,很有道理吧,,其實本蒟蒻是假設一些值不變,然後要使左邊變小,需要變那些值,類似於物理分析),然後,大於號反過來唄。

1 #include 2

#define ll long long

3#define lowbit(x) x&(-x)

4#define inf 0x3f3f3f3f

5#define eps 1e-5

6#define n 1000005

7using

namespace

std;

8inline ll ra()912

while (ch>='

0' && ch<='

9')

13return x*f;14}

15 ll f[n],ans=(1ll<<60

);16

ll cst[n],q[n];

17ll n;

18ll slope(ll j, ll k)

1922

intmain()

2338 cout<39return0;

40 }

bzoj 3156 防禦準備

第一行為乙個整數n表示戰線的總長度。第二行n個整數,第i個整數表示在位置i放置守衛塔的花費ai。共乙個整數,表示最小的戰線花費值。10 2 3 1 5 4 5 6 3 1 2 181 n 10 6,1 ai 10 9 暴力就不多說了 include include include include i...

BZOJ 3156 防禦準備

1 n放城堡 木偶,在第i位放城堡的 cost i 給出,放木偶的 cost i j i j為i右邊第乙個城堡 問最小花費普通 theta dp會掛 n leq 100000 需要斜率優化,為了方便,我們從左往右dp f i 為在這個點放城堡的最小花費 因為第n個必須放城堡 f i min j i ...

bzoj3156防禦準備

bzoj3156防禦準備 題意 n個檢查點,在第i個檢查點放置塔花費a i 放置木偶花費為該位置右邊最近乙個塔離它的距離。求最小花費。n 1000000 題解 從右往左處理。在第i個點放塔的費用f i min a i 用等差數列求和公式化簡後作斜率dp,具體看 反思 本弱公式總是推錯,要穩!1 in...