題目鏈結: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 ...