题目链接

思路

多重限制条件的01背包,输出选取那几小组,可以开个bool数组记录选取物品时的状态,然后从最后一个物品往上找标记。

后记

这道题比赛的时候数据太水,简单排序选一件物品就行,看别人代码还有直接输出零过了。。。比赛结束1小时左右,加强数据了,还好提前过了 ^ _ ^
物品标记当时想错了,赛后看看学长代码真的强

#include <iostream>
#include <algorithm>
#include <stdio.h>
#include <vector>
#include <map>
#include <bitset>
#include <set>
#include <string.h>
#include <cmath>
#include <queue>
#include <algorithm>
#define N 40
#define ll long long
#define lowbit(a) a&(-a)
#define pb(a) push_back(a)
#define mk(a, b) make_pair(a, b)
#define mem(a, b) memset(a, b, sizeof(a))
#define read(a) scanf("%d", &a)
#define print(a) printf("%d\n", a)
using namespace std;
struct group{int p, a, c, m, g;
}a[N];
// 也可以开4个数组存每个小组信息,因为没有问最大的分值
int dp[N][N][N][N];
bool vis[N][N][N][N][N];
int main(){#ifndef ONLINE_JUDGEfreopen("in.txt", "r", stdin);
#endifint n, P, A, M, C, G;scanf("%d", &n);for (int i = 0; i < n; ++i) {scanf("%d%d%d%d%d", &a[i].p, &a[i].a, &a[i].c, &a[i].m, &a[i].g);}scanf("%d%d%d%d", &P, &A, &C, &M);for (int i = 0; i < n; ++i) {for (int j = P; j >= a[i].p; --j) {for (int k = A; k >= a[i].a; --k) {for (int l = C; l >= a[i].c; --l) {for (int r = M; r >= a[i].m; --r) {if (dp[j - a[i].p][k - a[i].a][l - a[i].c][r - a[i].m] + a[i].g > dp[j][k][l][r]) {dp[j][k][l][r] = dp[j - a[i].p][k - a[i].a][l - a[i].c][r - a[i].m] + a[i].g;// 将当前状态标记vis[i][j][k][l][r] = true;}}}}}}vector<int> wu;// 从最后一个物品向前找标记for (int i = n - 1, j = P, k = A, l = C, r = M; i >= 0; --i) {if (vis[i][j][k][l][r]) {wu.push_back(i);j -= a[i].p;k -= a[i].a;l -= a[i].c;r -= a[i].m;}if (j < 0 || k < 0 || l < 0 || r < 0)break;}if (wu.empty()) {printf("%d\n", 0);}else {printf("%d\n", wu.size());sort(wu.begin(), wu.end());for (auto it : wu) {printf("%d ", it);}printf("\n");}return 0;
}

牛客网暑期ACM多校训练营(第三场)A - PAXM Team(01背包)相关推荐

  1. 牛客网暑期ACM多校训练营(第三场): E. Sort String(KMP)

    链接:https://www.nowcoder.com/acm/contest/141/E 来源:牛客网 题目描述 Eddy likes to play with string which is a ...

  2. 牛客网暑期ACM多校训练营(第三场): C. Shuffle Cards(splay)

    链接:https://www.nowcoder.com/acm/contest/141/C 来源:牛客网 题目描述 Eddy likes to play cards game since there ...

  3. 牛客网暑期ACM多校训练营(第五场): A. gpa(01分数规划)

    题目描述 Kanade selected n courses in the university. The academic credit of the i-th course is s[i] and ...

  4. 牛客网暑期ACM多校训练营(第三场): A. Ternary String(欧拉降幂+递推)

    题目描述 A ternary string is a sequence of digits, where each digit is either 0, 1, or 2. Chiaki has a t ...

  5. 牛客网暑期ACM多校训练营(第三场): C. Chiaki Sequence Reloaded(数位DP)

    题目描述 Chiaki is interested in an infinite sequence a1, a2, a3, ..., which defined as follows: Chiaki ...

  6. 牛客网暑期ACM多校训练营(第九场)

    牛客网暑期ACM多校训练营(第九场) A. Circulant Matrix 做法:看到下标 \(xor\) 这种情况就想 \(FWT\),可是半天没思路,于是放弃了..其实这个 \(n\) 疯狂暗示 ...

  7. 牛客网暑期ACM多校训练营(第一场)

    牛客网暑期ACM多校训练营(第一场) A. Monotonic Matrix 考虑0和1的分界线,1和2的分界线,发现问题可以转化为两条不互相穿过的路径的方案数(可重叠),题解的做法就是把一条路径斜着 ...

  8. 牛客网暑期ACM多校训练营(第二场): H. travel(树形线头DP)

    链接:https://ac.nowcoder.com/acm/contest/140/H 来源:牛客网 题目描述 White Cloud has a tree with n nodes.The roo ...

  9. 牛客网暑期ACM多校训练营(第二场)A .run

    链接:https://www.nowcoder.com/acm/contest/140/A 来源:牛客网 题目描述 White Cloud is exercising in the playgroun ...

  10. 牛客网暑期ACM多校训练营(第一场) J (莫队算法)

    题目链接:https://www.nowcoder.com/acm/contest/139/J 题目大意:给一个序列,进行q次查询,问1~l和r~n中有多少个不同的数字 题目思路:之前只是听说过莫队算 ...

最新文章

  1. 学计算机哪家强?清华竟是2018全球第1!(附排名)
  2. [Unity热更新]04.卸载方式
  3. 关于算法的时间复杂度怎么计算
  4. 【正一专栏】瓜迪奥拉就是一座无可匹及的丰碑
  5. HBase中Bloomfilter类型的设置及使用的理解
  6. “http 500内部服务器错误”的解决方法
  7. C++/OpenCV:同颜色检测提取
  8. thinkphp-无限分类下根据任意部门获取顶级部门ID
  9. 18-10-31 Scrum Meeting 3
  10. android 开发工具类,Android中常用开发工具类—持续更新...
  11. Win10/Win11:恢复Win7照片查看器
  12. linux中如何查看本机ip,Linux中如何查看本机IP地址呢?
  13. transition动画
  14. 『DL笔记』预训练(pre-training/trained)与微调(fine tuning)
  15. 计算机网络--哈工大网课--MOOC中国大学 慕课 答案
  16. 【OpenStreetMap】任意城市道路数据下载(附带数据解释)
  17. 《用于自动越野导航的实时语义映射》论文笔记
  18. 神经网络知识点汇总——FNN
  19. 地图上分成一块一块区域 高德地图_在谷歌地图上绘制行政区域轮廓【结合高德地图的API】...
  20. OMA DRM V1.0学习笔记

热门文章

  1. windows下使用docker(一)—— 安装
  2. 1005. 继续(3n+1)猜想 (25)
  3. 2017年7月27日 老大传授的知识
  4. 10.30 NFLS-NOIP模拟赛 解题报告
  5. TOJ 2815 Connect them (kruskal+并查集)
  6. 爱迪生欺骗了世界! ----马云给雅虎员工演讲
  7. Day11多态部分-2 【1.2 多态的前提】
  8. PHP-代码审计-审计第一步
  9. centos6 yum mysql_centos6_yum_mysql
  10. [Python图像处理] 十五.图像的灰度线性变换