這個題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...