BZOJ 1010 玩具裝箱toy (斜率優化)

2022-08-15 06:54:13 字數 812 閱讀 4567

題目大意:將n個數分成若干組,並且每組的數在原陣列中應是連續的,每組會產生的代價為sum(i)-sum(j)+i-j-1-m,m為已知的常數。求最小代價。

題目分析:定義dp(i)表示將前 i 個元素分好組後產生的最小代價,狀態轉移方程很顯然了:

dp(i)=min(dp(j)+[sum(i)-sum(j)+i-j-1-m)]^2)。另f(i)=sum(i)+i,並且另g(i)=f(i)-1-m,則dp(i)可整理成dp(i)=min(dp(j)+sum(j)^2-2*g(i)*sum(j))+g(i)。很顯然需要斜率優化。

**如下:

# include# include# include# includeusing namespace std;

# define ll long long

const int n=50005;

int n,m;

int q[n];

ll a[n];

ll dp[n];

ll sum[n];

void read(ll &x)

}void init()

for(int i=1;i<=n;++i)

sum[i]+=i;

}ll getson(int k,int j)

ll getmother(int k,int j)

double getk(int i,int j)

ll todp(int j,int i)

ll solve()

return dp[n];

}int main()

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

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