HNOI2008 玩具裝箱 兩種做法

2022-08-22 21:33:12 字數 2342 閱讀 8933

題目評測在這裡

一道很明顯的1d1d動態規劃,方程很好寫

f[i]=min

直接寫的話500000的資料量會讓你明白。

兩種做法:

①四邊形不等式優化

很明顯的,用w[i+1,j]表示上述方程裡的( i-(j+1)+s[i]-s[j]-l )2,不難驗證這是個滿足單調性的,也就是說對於這個方程,決策是單調的

那麼根據決策單調性,很自然的就有o(nlogn)的演算法了

決策單調性

1/**

2*prob : hnoi 2008 toy

3*sol : 1d1d dp -- 決策單調性

4*data : 2012-6

5*author : zhou hang6*/

78 #include 9 #include 10 #include 11 #include 12 #include 13

14#define maxn 55000

15#define lld long long

1617

18using

namespace

std;

1920

struct

node

21 q[maxn];

2526

intn,l;

27lld f[maxn],c[maxn];

2829

lld sqr(lld x)

3033

34 lld cal(int x,int

y)35

3839

void

dp()

4065

66//

二分,留下當前決策的一部分

67 l=q[tail].x; r=q[tail].y+1;68

while (l+1

6974

if (r>=n+1) continue;75

76 q[tail].y=l;

77 q[++tail].x=r;

78 q[tail].y=n;

79 q[tail].pos=i;80}

8182}83

8485

intmain()

8697

98dp();

99100 cout

101102

fclose(stdin); fclose(stdout);

103return0;

104 }

②斜率優化 o(n)

個人覺得實際上斜率優化就是凸完全單調性的一種特殊情況,關於斜率優化的使用方法,這個人條理很清晰,覺得很好,受到了很大啟發

在這裡謝一聲

關於斜率優化的講解,這個裡面講的很好

這道題直接說化簡方程後的結果了:((f[x]+s'[x]*s'[x])-(f[y]+s'[y]*s'[y]))/(s'[x]-s'[y])>2*(s'[i]-l')    其中s'[i]=s[i]+i,l'=l+1

g(x,y)=((f[x]+s'[x]*s'[x])-(f[y]+s'[y]*s'[y]))/(s'[x]-s'[y])

具體看**

斜率優化

1/**

2*prob : hnoi 2008 toy

3*sol : 1d1d dp -- 斜率優化

4*data : 2012-6

5*author : zhou hang6*/

78 #include 9 #include 10 #include 11 #include 12 #include 13

14#define maxn 55000

15#define lld long long

1617

using

namespace

std;

1819

intq[maxn];

20int

n,l;

21lld f[maxn],s[maxn];

2223

double g(int x,int

y)24

2728

29void

dp()

3046 cout

;47}48

49int

main()

5061

//s'[i]=s[i]+n 用s[i]存s'[i]

6263

dp();

6465

66fclose(stdin); fclose(stdout);

67return0;

68 }

HNOI2008 玩具裝箱

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

HNOI 2008 玩具裝箱

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

HNOI2008 玩具裝箱toy

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