題目內容
樣例字首知識
題解題目名稱:裝箱問題
有乙個箱子容量為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...