01揹包優先佇列優化
01揹包優先佇列優化
設重量為w,權值為v
則單位重量價值為v / w
設有物品1,物品2
若v1 / w1 < v2 / w2
則說明v2的單位重量價值高
即v1 * w2 < v2 * w1
於是可過載結構體,使得v2 * w1大的優先順序高
即:
struct Node {
LL w, v;
Node() {};
Node(LL _w, LL _v) {w = _w, v = _v;}
friend bool operator < (Node a, Node b) {
return a.v * b.w < b.v * a.w;
}
};
重點是本題資料範圍
1 <= w <= 100
1 <= v <= 1e9
可見價值與質量相比
價值占主導地位
接著按照貪心的思想
單位重量價值越高的越先裝入揹包
本題結束
AC程式碼:
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <queue>
using namespace std;
typedef long long LL;
struct Node {
LL w, v;
Node() {};
Node(LL _w, LL _v) {w = _w, v = _v;}
friend bool operator < (Node a, Node b) {
return a.v * b.w < b.v * a.w;
}
};
LL dp[105];
int main()
{
LL n, m, w, v;
while(scanf("%lld%lld", &n, &m) != EOF) {
priority_queue<Node> q;
for(int i = 0; i < n; i ++) {
scanf("%lld%lld", &w, &v);
q.push(Node(w, v));
}
LL ans = 0;
while(m > 100) {
ans += q.top().v;
m -= q.top().w;
q.pop();
}
memset(dp, 0, sizeof(dp));
while(!q.empty()) {
w = q.top().w;
v = q.top().v;
q.pop();
for(int i = m; i >= w; i --) {
dp[i] = max(dp[i], dp[i - w] + v);
}
}
ans += dp[m];
printf("%lld\n", ans);
}
return 0;
}
相關文章
- 多重揹包問題的單調佇列優化佇列優化
- PHP優先佇列PHP佇列
- 01揹包動態規劃空間優化動態規劃優化
- 【Dijkstra演算法】未優化版+優先佇列優化版演算法優化佇列
- STL 優先佇列 用法佇列
- 淺談優先佇列佇列
- 堆與優先佇列佇列
- 優先佇列和堆排序佇列排序
- NO GAME NO LIFE(優先佇列/最小堆)GAM佇列
- 優先佇列的比較器佇列
- 封裝優先順序佇列封裝佇列
- 佇列 優先順序佇列 python 程式碼實現佇列Python
- 棧,佇列,優先順序佇列簡單介面使用佇列
- STL優先佇列最小堆最大堆佇列
- leetcode621——優先佇列的思路LeetCode佇列
- 2. 揹包,佇列和棧佇列
- 【模板】01揹包、完全揹包
- 演算法面試(三) 優先佇列演算法面試佇列
- 二叉堆實現優先佇列佇列
- 手擼優先佇列——二叉堆佇列
- C++ STL 優先佇列 (priority_queue)C++佇列
- .NET 6 優先佇列 PriorityQueue 實現分析佇列
- Java優先順序佇列DelayedWorkQueue原理分析Java佇列
- 01 揹包
- 三、資料結構演算法-棧、佇列、優先佇列、雙端佇列資料結構演算法佇列
- 01揹包、完全揹包、多重揹包詳解
- 揹包問題(01揹包與完全揹包)
- 堆、堆排序和優先佇列的那些事排序佇列
- 最詳細版圖解優先佇列(堆)圖解佇列
- 【堆】【優先佇列】[NOIP2004]合併果子佇列
- Facebook的分散式優先順序佇列FOQS分散式佇列
- 8.13(優先佇列貪心維護+打表找規律+對頂堆優先佇列+DFS減枝+貪心dp)佇列
- 01揹包、有依賴的揹包
- codeforces round 974(div.3)E(優先佇列實現dijstra演算法,devc++的優先佇列用greater報錯)佇列JS演算法devC++
- CodeForces - 960B:Minimize the error(優先佇列+貪心)Error佇列
- Sunscreen POJ - 3614(防曬油) 貪心-優先佇列佇列
- [USACO 2009 Feb Gold] Fair Shuttle (貪心+優先佇列)GoAI佇列
- 多重揹包動態規劃及空間優化動態規劃優化