【题解】luogu P1757 通天之分组背包
生活随笔
收集整理的這篇文章主要介紹了
【题解】luogu P1757 通天之分组背包
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
分組背包類型
總結:
1.先循環體積,再循環每組內的物品,保證每組物品內只選一次。
若調換位置,有可能每組內物品多選了。
2.num數組記錄每組有多少個物品;
belong數組記錄每組物品的每一個物品的序列號是多少
很巧妙的方法
#include<bits/stdc++.h> using namespace std; int dp[1005], val[1005], w[1005], num[1005], belong[101][20]; int maxx, m, n, a, b, c; int main() {cin >> m >> n;for(int i = 1; i <= n; i++){cin >> a >> b >> c;val[i] = b;w[i] = a;maxx = max(maxx, c);num[c]++;belong[c][num[c]] = i;}for(int i = 1; i <= maxx; i++)for(int j = m; j >= 0; j--)for(int k = 1; k <= num[i]; k++)if(j >= w[belong[i][k]])dp[j] = max(dp[j], dp[j-w[belong[i][k]]]+val[belong[i][k]]);cout << dp[m];return 0; }?
轉載于:https://www.cnblogs.com/lovezxy520/p/11348386.html
總結
以上是生活随笔為你收集整理的【题解】luogu P1757 通天之分组背包的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何判断一个网站是否被百度处罚中
- 下一篇: jQuery 源码分析笔记(3)