玩具裝箱(noip衝刺模擬題 DP)

2021-08-08 01:15:39 字數 2024 閱讀 7375

1.玩具裝箱(toy.pas/c/cpp) time limit: 1000ms memory limit: 256m

***喜歡玩具,家裡有n個玩具,有一天,她想讓玩具們曬曬太陽,***把所有的玩具都拿出來擺成一排,從左到右依次編號為1~n。每個玩具大小不一,玩具i的大小為ai。

太陽下山了,***開始收玩具了,現在將這些玩具從左開始依次裝成若干箱,每個箱子只能裝最多m個且編號連續的玩具。在某個箱子裡裝若干個玩具的費用計算方法:如果該箱子裡最大的玩具為a,最小的為b,玩具個數為s,則費用為k+s*(a-b)。這裡的k是箱子本身的費用,所有箱子的費用都相等。

***想知道把將所有玩具都裝進箱裡的最小費是多少?

第一行為3個整數n, m, k,用空格分隔。n為玩具個數,m為每個箱子最多能裝的玩具個數,k為箱子本身的費用。

以下n行第i行(1<=i<=n)為整數ai,表示第i個玩具的大小。

輸出為乙個整數,表示裝箱費用總和的最小值。

toy.in

6 3 6

1 2

3 1

2 1

toy.out

21樣例解釋:

第乙個箱子裡裝玩具1~3,第二個裡裝4~6,開銷總和為(6+3×(3−1))+(6+3×(2−1)) = 21。這是最小可能的開銷總和,所以輸出21。
60%的資料滿足:n,m<=20;
80%的資料滿足:n<=2 000,m<=100;

100%的資料滿足:1<=n<=20 000,1<=m<=1 000,0<=k<=1 000 000 000,

1<=ai<=1 000 000 000 (1<=i<=n),m<=n

很難受,寫了乙個半小時只拿了20分

當模擬+數論題在寫,結果發現還是要寫dp

結果方程出不來,看來hsj大佬的才知道還要先初始化(就很氣)

言歸正傳

先把從 i 開始到 j 的最大最小值都求出來,然後把它的值也求出來

再用陣列存起來

再把它當揹包做,沒了

但是因為它的值可能是 m*(max-min) 所以會爆int

嗯,建議把inf設為0x3fffffffffffffff (15個f,long long的最大值)

#include

#include

#define ll long long

const ll inf=0x3f3f3f3f3f3f;

using

namespace

std;

int a[20005],n,m,k;

ll f[20005],zhi[20005][1005]; //記憶體800兆左右,但是題目限制其實256兆

int main()

printf("\n");

} //預處理

for(int i=1;i<=n;i++) f[i]=inf;

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

for(int j=1;j<=m&&(i-j+1)>0;j++)

f[i]=min(f[i],f[i-j]+zhi[i-j+1][j]);

printf("%i64d\n",f[n]);

return

0;}

注釋也說了,這個記憶體超了很多

那麼有沒有優化呢

答案是有的(雖然是別人寫的)

#include 

#include

using

namespace

std;

const

int maxn = 20005;

typedef

long

long int64;

const int64 inf = 1e18;

int a[maxn],n,m,k;

int64 dp[maxn];

int main()

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

return

0;}

NOIP模擬 好題 分玩具

題目描述 豆豆和豆沙正在分一些玩具,每個玩具有乙個好玩值,每個人可以拿走任意數量的玩具,獲得的愉快度為最小的好玩值。現在豆豆先拿,每個人輪流操作,直到沒有玩具可以拿。豆豆想知道他能比豆沙多出多少愉快度?輸入格式 第一行 n 表示玩具個數。接下來一行 n 個整數表示第 i 個玩具的好玩值。輸出格式 輸...

斜率優化DP 玩具裝箱

hnoi2008 玩具裝箱toy time limit 1000ms memory limit 165536k total submit 5 accepted 5 description p教授要去看奧運,但是他捨不下他的玩具,於是他決定把所有的玩具運到北京。他使用自己的壓縮器進行壓縮,其可以將任意...

玩具裝箱TOY 斜率優化DP

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