【題意簡述】現有n
個物品,第
i個物品的長度為ci
。可以製造若干個容器,容器的數量和長度不限制,但是只能把連續若干個物品放入容器中。把物品區間[i,j]放入同乙個容器中,長度為
,每乙個容器的製造代價為,l
為給定常數。求最小代價之和。
【資料範圍
】對於100%的資料,
。【原題鏈結】
如果只要部分分,那麼容易設計
較慢的的演算法。狀態轉移方程如下:
這是o(n
3)的。還有很多優化空間。做字首和,可以進一步優化到o(n
2)。實測
若j>k,且對於x說,從j比從k轉移來的優,則有不等式:
將b所表示的值代入分母,得:
就得到斜率的式子了。以這樣的規則在單調佇列中彈隊首、隊尾即可。
之後,兩條黃色的、被叉掉的線段被包括在凸殼裡面了,可以排除,被紅色線代替了。
之後就是**了。
#include#include(完)#define int long long
using
namespace
std;
int dp[50010
];int n,l,c[50010],s[50010],a[50010
];int front=1,rear=1,q[50010
];inline
double slope(int j,int
k)inline
int f(int x,int
y)signed main()
for(int i=1;i<=n;i++)
cout
return0;
}
Luogu P3195玩具裝箱(斜率優化DP)
這題還是比較炫的 題目鏈結 我們設f i 是已經裝了前i個玩具,且第i個玩具是某箱子裡裝的最後乙個東西 廢話 那我們很輕鬆可以想到乙個轉移方程 for int i 1 i n i for int j 0 jj f i min f i f j squa sum i sum j i j 1 l 其中su...
洛谷3195玩具裝箱(斜率優化)
題目描述 p教授要去看奧運,但是他捨不下他的玩具,於是他決定把所有的玩具運到北京。他使用自己的壓縮器進行壓縮,其可以將任意物品變成一堆,再放到一種特殊的一維容器中。p教授有編號為1.n的n件玩具,第i件玩具經過壓縮後變成一維長度為ci.為了方便整理,p教授要求在乙個一維容器中的玩具編號是連續的。同時...
P3195 HNOI2008 玩具裝箱TOY
題目描述 p教授要去看奧運,但是他捨不下他的玩具,於是他決定把所有的玩具運到北京。他使用自己的壓縮器進行壓縮,其可以將任意物品變成一堆,再放到一種特殊的一維容器中。p教授有編號為1 n的n件玩具,第i件玩具經過壓縮後變成一維長度為ci.為了方便整理,p教授要求在乙個一維容器中的玩具編號是連續的。同時...