BZOJ1010 玩具裝箱toy

2021-07-27 16:48:01 字數 1377 閱讀 8573

題目鏈結:bzoj1010

題目大意把n

個數分成若干段,從i到

j 分為一段的花費co

st[i

][j]

=∑jk

=iva

l[k]

+j−i

,求最小花費。

分析

1. 斜率優化dp,dp

[i]=

min(

dp[j

]+co

st[j

+1][

i]) 。

2. 先把l+

1 ,設f(

x)=∑

xk=1

val[

k]+x

,ff(

x)=d

p[x]

+f(x

)2,g[i

,j]=

ff(i

)−ff

(j)f

(i)−

f(j)

。 3. 則維護乙個下凸的解集,且維護斜率大於兩倍的f(

i)−l

上**

#include 

#include

#include

using

namespace

std;

typedef

double db;

typedef

long

long ll;

const

int n = 5e4 + 10;

int n, l;

ll sum[n], dp[n];

inline

int read()

int head, tail, val[n];

inline

void clear()

inline

void pop_back()

inline

void pop_front()

inline

void push(int a)

inline

int size()

#define p(a) ((a) * (a))

#define f(a) (sum[a] + (a))

#define ff(a) (dp[a] + p(f(a)))

inline db calck(int a, int b)

int main()

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

return

0;}

以上

BZOJ1010 玩具裝箱toy

1010 hnoi2008 玩具裝箱toy time limit 1 sec memory limit 162 mb submit 7631 solved 2924 description p教授要去看奧運,但是他捨不下他的玩具,於是他決定把所有的玩具運到北京。他使用自己的壓縮器進行壓縮,其可以將任...

BZOJ1010玩具裝箱Toy

p教授要去看奧運,但是他捨不下他的玩具,於是他決定把所有的玩具運到北京。他使用自己的壓縮器進行壓 縮,其可以將任意物品變成一堆,再放到一種特殊的一維容器中.p教授有編號為1.n的n 件玩具,第 i件玩具經過壓縮後變成一維長度為ci 為了方便整理,p教授要求在乙個一維容器中的玩具編號是連續的。同時如果...

BZOJ1010 玩具裝箱toy

斜率優化dp。首先比較容易想到 但是很不幸,由上式的可以看出這實際上要用到兩層迴圈,而資料量為50000,如果這樣做,肯定超時,這時候需要斜率優化了。如果遞推式能變成 且單調,則可使用斜率優化。我們將式變形,令 則由此判斷可以使用斜率優化。關鍵的來了 如果我們認為的兩個方案且的方案的方案好則 dp ...