NOIP普及組2011 裝箱問題

2022-03-15 18:58:12 字數 1224 閱讀 5621

目錄題目內容

樣例字首知識

題解有乙個箱子容量為\(v\)(正整數,\(0\le v\le20000\)),同時有\(n\)個物品(\(0),每個物品有乙個體積(正整數)。

要求\(n\)個物品中,任取若干個裝入箱內,使箱子的剩餘空間為最小。

\(1\)個整數,表示箱子容量

\(1\)個整數,表示有\(n\)個物品

接下來\(n\)行,分別表示這\(n\)個物品的各自體積

\(1\)個整數,表示箱子剩餘空間。

2468

31279

7

0
這是一道01揹包裸題,先進行01揹包,在找到比\(v\)小但是可以得到的數,輸出\(v\)與這個數的差。

//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;

int main()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 vv 正整數,0 v 20000 0 le v le20000 0 v 20 000 同時有n nn個物品 0 300 030 每個物品有乙個體積 正整數 要求n nn個物品中,任取若干個裝入箱內,使箱子的剩餘空間為最小。1 11個...

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...