hdu6007 Mr. Panda and Crystal (最短路+完全揹包)
思路:先求出每個道具的最小造價,再跑完全揹包即可。
我們不停的用 當前已得最小造價的道具來更新當前道具可以合成的道具,類似於dij求最短路那樣。就能獲得每個道具的最小花費了。
#pragma GCC optimize(2)
#pragma GCC optimize(3)
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
const int N = 2e5 + 10;
#define fi first
#define se second
#define pb push_back
#define wzh(x) cerr<<#x<<'='<<x<<endl;
int t,m,n,k,cas;
int st[N];
int a[N],b[N];
int dp[10005];
struct uzi{
int a;
vector<pair<int,int>>v;
bool sta;
int pos;
}p[N];
vector<int>v[N];
int main() {
ios::sync_with_stdio(false);
for(cin>>t,cas=1;cas<=t;cas++){
cin>>m>>n>>k;memset(dp,0,sizeof(dp));
for(int i=1;i<=n;i++){
v[i].clear();
cin>>st[i];
if(st[i]){
cin>>a[i]>>b[i];
}else{
cin>>b[i];
a[i]=1e9;
}
}
priority_queue<pair<LL,int > >Q;
vector<uzi>res;
for(int i=1;i<=k;i++){
int x,y;
cin>>x>>y;
vector<pair<int,int> >QQ;
for(int j=1;j<=y;j++){
int e,f;
cin>>e>>f;
v[e].pb(i);
QQ.pb({e,f});
}
p[i]= {x,QQ,0,i};
res.pb(p[i]);
}
auto get=[&](vector<pair<int,int>>&v){
LL tot=0;
for(auto ka:v){
tot+=1ll*ka.se*a[ka.fi];
}
return tot;
};
for(int i=1;i<=n;i++){
if(st[i]){
Q.push({-a[i],i});
}
}
while(!Q.empty()){
auto x=Q.top();
Q.pop();
for(auto ka:v[x.se]){
LL tmp=get(p[ka].v);
if(a[p[ka].a]>tmp){
a[p[ka].a]=tmp;
Q.push({-a[p[ka].a],p[ka].a});
}
}
}
for(int i=1;i<=n;i++){
for(int j=a[i];j<=m;j++){
dp[j]=max(dp[j],dp[j-a[i]]+(int)b[i]);
}
}
cout<<"Case #"<<cas<<": "<<dp[m]<<'\n';
}
return 0;
}
相關文章
- 揹包DP——完全揹包
- 分組揹包、完全揹包
- 【模板】01揹包、完全揹包
- 揹包問題(01揹包與完全揹包)
- 01揹包、完全揹包、多重揹包詳解
- dp-完全揹包
- 01揹包和完全揹包問題解法模板
- javascript演算法基礎之01揹包,完全揹包,多重揹包實現JavaScript演算法
- 【程式碼隨想錄】完全揹包
- HDU Piggy-Bank(完全揹包問題)
- 從【零錢兌換】問題看01揹包和完全揹包問題
- 演算法-動態規劃-完全揹包演算法動態規劃
- PIPIOJ 1079: PIPI的存錢罐 完全揹包
- HDU - 1114 Piggy-Bank(完全揹包板題)
- Codeup 貨幣系統(完全揹包問題)
- CHOJ 5202 自然數拆分Lunatic版 【完全揹包模型】模型
- 揹包DP——混合揹包
- 圖解二維完全揹包問題——降維打擊圖解
- 藍橋杯 演算法提高 拿糖果(完全揹包dp)演算法
- 揹包
- 01揹包、有依賴的揹包
- leedcode518:完全揹包,零錢兌換,python逐行註解Python
- 8.3考試總結(NOIP模擬19)[最長不下降子序列·完全揹包問題·最近公共祖先]
- 01 揹包
- 揹包DP
- 最短路:求最長最短路
- 最短路 || 最長路 || 次短路
- hdu3591The trouble of Xiaoqian 多重揹包+全然揹包
- 面試官:完全揹包都不會,是你自己走還是我送你?面試
- 揹包問題
- 01揹包問題
- 通天之分組揹包
- 01 揹包問題
- 揹包九講(部分)
- 【例9.14】混合揹包
- POJ 2184 (01揹包)
- 51nod 1597 有限揹包計數問題 (揹包 分塊)
- python 動態規劃(揹包問題和最長公共子串)Python動態規劃