ZOJ 3703 Happy Programming Contest

题目描述:

  题目链接:ZOJ 3703 Happy Programming Contest

题目大意:

  这是一道虐狗的题目。讲的是一对情侣在赛码场上,每道题对应不同颜色的气球,不同的气球对妹子的吸引力不同。在已知程序员做每道题所需的时间、比赛总时长以及每一个气球对妹子的吸引值。求在能力和时间允许的前提下,得到的气球对妹子吸引力的总值最大为多少。要求输出,吸引总值,解题数目,罚时。

解题思路:

  首先这个题很明显的是一个01背包。然而在求最大价值的同时,还要求计算解题数和罚时。因此,我考虑先对所有的题目进行01背包处理。然后在处理的过程中标记出最优方案中作出的题。在背包处理完之后,将做的题标记出来,按照耗时从小到大排序计算罚时即可。

复杂度分析:

时间复杂度: O(n∗t) O(n*t)
空间复杂度: O(n∗t) O(n*t)

AC代码:

#include <iostream>
#include <cmath>
#include <cstring>
#include <cstdio>
#include <algorithm>
using namespace std;const int maxn = 1010;
int f[maxn];
int G[55][maxn];
int t[55];
int v[55];
int ord[55];
int n,tt;int main()
{int N;cin >> N;while(N--){scanf("%d%d",&tt,&n);for(int i = 1; i <= n; i++)scanf("%d",&t[i]);for(int i = 1; i <= n; i++)scanf("%d",&v[i]);memset(f,0,sizeof(f));memset(G,0,sizeof(G));for(int i = 1; i <= n; i++){for(int j = tt; j >= t[i]; j--){if(f[j] < f[j - t[i]] + v[i]){f[j] = f[j - t[i]] + v[i];G[i][j] = 1;}}}int cnt = 0;int i = n;int j = tt;while(i){if (G[i][j] == 1){ord[cnt++] = t[i];j -= t[i];}i--;}int pently = 0;int sum = 0;sort(ord,ord+cnt);for(int i = 0; i < cnt; i++) {sum += ord[i];pently = sum + pently;}printf("%d %d %d\n",f[tt],cnt,pently);}
}/************************
2
300 10
10 10 10 10 10 10 10 10 10 10
1 2 3 4 5 6 7 8 9 10
300 10
301 301 301 301 80 140 60 301 301 301
1000 1000 1000 1000 1010 1000 1000 1000 1000 1000
****************************/

ZOJ 3703 Happy Programming Contest 0-1背包 DP相关推荐

  1. Happy Programming Contest(01背包)

      In Zhejiang University Programming Contest, a team is called "couple team" if it consist ...

  2. HDU1248 寒冰王座【0/1背包+DP】

    寒冰王座 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submi ...

  3. HDU2602 Bone Collector【0/1背包+DP】

    Bone Collector Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) T ...

  4. 51Nod-1101 换零钱【0/1背包+DP】

    1101 换零钱 基准时间限制:1秒 空间限制:131072KB 分值:20难度:3级算法题 N元钱换为零钱,有多少不同的换法?币值包括1 2 5分,1 2 5角,1 2 5 10 20 50 100 ...

  5. 2018 ACM-ICPC, Syrian Collegiate Programming Contest F. Pretests(子集dp)

    LINK 题意 一道题有kkk个测试点,共提交了nnn次 每次提交是一个长为kkk的010101串,表示是否能通过第iii个测试点 现在要求你重新排序kkk个测试点,使得∑i=1nw[i]\sum\l ...

  6. Yahoo Programming Contest 2019.D.Ears(DP)

    题目链接 菜爆了啊QAQ 记起点为\(S\),终点为\(T\),走过的最靠左的点是\(L\),最靠右的点是\(R\). 那么坐标轴被分成了五段: \(0\sim L-1\):经过\(0\)次: \(L ...

  7. *【ZOJ - 3703】Happy Programming Contest(带优先级的01背包)

    题干: In Zhejiang University Programming Contest, a team is called "couple team" if it consi ...

  8. 【ZOJ - 3703】Happy Programming Contest(带优先级的01背包,贪心背包)

    题干: In Zhejiang University Programming Contest, a team is called "couple team" if it consi ...

  9. zoj 3703(背包)

    简单的背包问题, 算是一种多重的吧. 解题的关键在于,要控制最后所用的时间最少,所以在程序的最开始应该先将 输入的各种题目 以时间升序排列, 然后就可以保证每次都以时间小的优先选, 这样就可以保证最后 ...

最新文章

  1. centos7 安装 Mysql 5.7.28,详细完整教程
  2. 拿haojava官方过程
  3. 从线上教育的如火如荼,反思传统培训行业的未来发展
  4. Windows上安装Kafka需要注意的几点
  5. win2003(sp2 x86)+iis6+php-5.3.5-Win32 配置
  6. Docker学习总结(65)—— 容器引擎 Docker 与 Podman 的详细对比分析
  7. 整合Spring Data JPA与Spring MVC: 分页和排序pageable
  8. ubuntu 彻底卸载软件
  9. diy手工制作泡沫小球_一撮羊毛用针来回的戳,DIY手工制作羊毛毡小动物,越戳越带劲...
  10. java请求url拼接xml_java访问一个URL,会返回给你一个XML格式的数据,该怎么实现?...
  11. ssm使用注解配置多数据源
  12. 文件包含漏洞和上传漏洞
  13. 科技复原,3000多前年的木乃伊「发声」了
  14. c语言达内月考试题,达内C培训第一次月考〔附答案〕.doc
  15. asp长度为4的随机数字写
  16. Unity2019.4—AnroidStudio—AndroidX接入SDK详细版
  17. Unity Android 接入高德定位SDK
  18. LiDAR点云处理软件
  19. linux不能显示文本文件内容的命令,Linux之文本文件查看命令
  20. ASP.NET验证控件祥解 (选择自 rko 的 Blog )

热门文章

  1. android好用的NFC软件,5个有用的NFC应用程序为Android,以利于NFC | MOS86
  2. 中秋节快到了,一起用MATLAB绘制一款2.5D月饼叭
  3. 在Linux环境下通过百度网盘下载并安装matlab2017a
  4. 制作Android系统App
  5. [Style Transfer]—Combining Markov Random Fields and Convolutional Neural Network for Image Synthesis
  6. 我如何使用smartwatch传感器限制covid 19感染
  7. maven 本地仓库的配置以及如何修改默认.m2仓库位置
  8. linux控制NVme硬盘点灯,一种实现多NVMe硬盘背板点灯的设计方法与流程
  9. OA课程--word2013实用技巧大全-目录
  10. background背景图片铺满背景并且不重复