bzoj3156防禦準備

2022-03-18 11:43:06 字數 697 閱讀 8984

bzoj3156防禦準備

題意:n個檢查點,在第i個檢查點放置塔花費a[i],放置木偶花費為該位置右邊最近乙個塔離它的距離。求最小花費。n≤1000000

題解:從右往左處理。在第i個點放塔的費用f[i]=min+a[i],用等差數列求和公式化簡後作斜率dp,具體看**。反思:本弱公式總是推錯,要穩!

**:

1 #include 2 #include 3 #include 4

#define ll long long

5#define maxn 1000010

6#define inc(i,j,k) for(int i=j;i<=k;i++)

7using

namespace

std;89

intn,q[maxn],l,r; ll c[maxn],f[maxn];

10 inline int

read() while(ch>='

0'&&ch<='

9')x=x*10+ch-'

0',ch=getchar();

13return x*f;14}

15double calc(int j,int

k)18

intmain()

24 printf("

%lld

",f[n]);

25 }

20160623

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 ...

BZOJ 3156 防禦準備

第一行為乙個整數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 個位置放防禦塔的...