NOIP普及組2011 裝箱問題

2021-09-27 02:44:33 字數 1611 閱讀 5425

題目內容

樣例字首知識

題解題目名稱:裝箱問題

有乙個箱子容量為v

vv(正整數,0≤v

≤20000

0\le v\le20000

0≤v≤20

000),同時有n

nn個物品(0

300

030),每個物品有乙個體積(正整數)。

要求n

nn個物品中,任取若干個裝入箱內,使箱子的剩餘空間為最小。

1

11個整數,表示箱子容量

1

11個整數,表示有n

nn個物品

接下來n

nn行,分別表示這n

nn個物品的各自體積

1

11個整數,表示箱子剩餘空間。

2468

31279

7

0
這是一道01揹包裸題,先進行01揹包,在找到比v

vv小但是可以得到的數,輸出v

vv與這個數的差。

//c++

#include

#include

#include

#define downto(name,i,u,d) for(name i=u;i>=d;i--)

inline

void

output

(long

long o)

;inline

long

long

input()

;std::bitset<

20001

>full;

intmain()

for(

short i=0;

;i++)if

(full[v-i]

)return

output

(i),0;

}inline

void

output

(long

long o)

inline

long

long

input()

//pascal

type box=0..20000;

var i,n:1..30;

j,v,volume:box;

full:array[box] of boolean;

begin

readln(v);

readln(n);

full[0]:=true;

for j:=1 to v do full[j]:=false;

for i:=1 to n do begin

readln(volume);

for j:=v downto volume do full[j]:=full[j] or full[j-volume];

end;for j:=0 to v do

if full[v-j] then break;

write(j);

end.

NOIP普及組2011 裝箱問題

目錄題目內容 樣例字首知識 題解有乙個箱子容量為 v 正整數,0 le v le20000 同時有 n 個物品 0 每個物品有乙個體積 正整數 要求 n 個物品中,任取若干個裝入箱內,使箱子的剩餘空間為最小。1 個整數,表示箱子容量 1 個整數,表示有 n 個物品 接下來 n 行,分別表示這 n 個...

NOIP2011普及組 瑞士輪

題目 洛谷p1309 codevs1132 vijos p1771 題目大意 要你模擬瑞士輪賽制,求出r輪後第q名選手的編號。解題思路 首先對所有選手按分數從大到小進行排序,然後模擬比賽。因為原本是排好序的,贏的加1分,輸的扣1分,所以贏的人和輸的人也是分別有序的。所以我們可以把每輪贏的人扔進乙個陣...

2023年NOIP普及組複賽題解

題目涉及演算法 這道題目是一道基礎的模擬題,只需要模擬將數字進行翻轉就可以了,注意 0 和 負數。實現 如下 include using namespace std void solve int num if num 0 int t 0 while num 0 cout t endl int n i...