報時助手(藍橋杯 基礎練習)
定義字元陣列 vert, %s 輸出
#include
#include
#include
using
namespace std;
char vert[50]
[20]=
;int
main()
puts(""
);return0;
}
1. 01揹包
有 n 件物品和乙個容量是 v 的揹包。每件物品只能使用一次。
第 i 件物品的體積是 vi,價值是 wi。
求解將哪些物品裝入揹包,可使這些物品的總體積不超過揹包容量,且總價值最大。
輸出最大價值。
f[i][j]
表示看前 i 個物品,體積極限是 j 的情況下價值的最大值
第 i 個物品有選與不選兩種情況:
優化:將二維陣列等價變換為一維陣列
2.完全揹包
每種物品無限件可用
for(int k = 0; k * v[i] <= j; k ++ )
f[i][j] = max(f[i][j], f[i - 1][j - k * v[i]] + k * w[i]);
優化:一維
3.多重揹包
第 i 種物品最多有 si 件
f[i][j] = max;
k = 0, 1, 2, … s[i] (&& k * v[i] <= j
4.多重揹包的二進位制優化
最少可用 上取整 logx 個數表示 1 ~ x
如 125.分組揹包12 - 202^
20= 11
11 - 212^
21= 9
9 - 222^
22= 5
12 = 1 + 2 + 4 + 5
1 2 4 可表示 1 ~ 7,每種表示 + 5 可表示 5 ~ 12,所以 1 2 4 5 表示出 0 ~ 12 內的所有數
每組物品有若干個,同一組內的物品最多只能選乙個。
每件物品的體積是 vij,價值是 wij,其中 i 是組號,j 是組內編號。
p1048 [noip2005 普及組] 採藥(洛谷)
#include
#include
using
namespace std;
const
int n =
1010
, m =
110;
int v[m]
, w[m]
, f[n]
;int
main()
藍橋杯 揹包問題
include includeusing namespace std const int maxn 30 int n,v,maxvalue 0 int w maxn c maxn void dfs int index,int sumw,int sumc return 岔道口 dfs index 1,...
藍橋杯 練習(2 23)
給出n個數,找出這n個數的最大值,最小值,和。第一行為整數n,表示數的個數。第二行有n個數,為給定的n個數,每個數的絕對值都小於10000。輸出三行,每行乙個整數。第一行表示這些數中的最大值,第二行表示這些數中的最小值,第三行表示這些數的和。51 3 2 4 55 2 111 n 10000。inc...
藍橋杯 01揹包
演算法提高 01揹包 時間限制 1.0s 記憶體限制 256.0mb 問題描述 給定n個物品,每個物品有乙個重量w和乙個價值v.你有乙個能裝m重量的揹包.問怎麼裝使得所裝價值最大.每個物品只有乙個.輸入格式 輸入的第一行包含兩個整數n,m,分別表示物品的個數和揹包能裝重量。以後n行每行兩個數wi和v...