ZOJ 3703 Happy Programming Contest 0-1背包 DP
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相关推荐
- Happy Programming Contest(01背包)
In Zhejiang University Programming Contest, a team is called "couple team" if it consist ...
- HDU1248 寒冰王座【0/1背包+DP】
寒冰王座 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submi ...
- HDU2602 Bone Collector【0/1背包+DP】
Bone Collector Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) T ...
- 51Nod-1101 换零钱【0/1背包+DP】
1101 换零钱 基准时间限制:1秒 空间限制:131072KB 分值:20难度:3级算法题 N元钱换为零钱,有多少不同的换法?币值包括1 2 5分,1 2 5角,1 2 5 10 20 50 100 ...
- 2018 ACM-ICPC, Syrian Collegiate Programming Contest F. Pretests(子集dp)
LINK 题意 一道题有kkk个测试点,共提交了nnn次 每次提交是一个长为kkk的010101串,表示是否能通过第iii个测试点 现在要求你重新排序kkk个测试点,使得∑i=1nw[i]\sum\l ...
- Yahoo Programming Contest 2019.D.Ears(DP)
题目链接 菜爆了啊QAQ 记起点为\(S\),终点为\(T\),走过的最靠左的点是\(L\),最靠右的点是\(R\). 那么坐标轴被分成了五段: \(0\sim L-1\):经过\(0\)次: \(L ...
- *【ZOJ - 3703】Happy Programming Contest(带优先级的01背包)
题干: In Zhejiang University Programming Contest, a team is called "couple team" if it consi ...
- 【ZOJ - 3703】Happy Programming Contest(带优先级的01背包,贪心背包)
题干: In Zhejiang University Programming Contest, a team is called "couple team" if it consi ...
- zoj 3703(背包)
简单的背包问题, 算是一种多重的吧. 解题的关键在于,要控制最后所用的时间最少,所以在程序的最开始应该先将 输入的各种题目 以时间升序排列, 然后就可以保证每次都以时间小的优先选, 这样就可以保证最后 ...
最新文章
- centos7 安装 Mysql 5.7.28,详细完整教程
- 拿haojava官方过程
- 从线上教育的如火如荼,反思传统培训行业的未来发展
- Windows上安装Kafka需要注意的几点
- win2003(sp2 x86)+iis6+php-5.3.5-Win32 配置
- Docker学习总结(65)—— 容器引擎 Docker 与 Podman 的详细对比分析
- 整合Spring Data JPA与Spring MVC: 分页和排序pageable
- ubuntu 彻底卸载软件
- diy手工制作泡沫小球_一撮羊毛用针来回的戳,DIY手工制作羊毛毡小动物,越戳越带劲...
- java请求url拼接xml_java访问一个URL,会返回给你一个XML格式的数据,该怎么实现?...
- ssm使用注解配置多数据源
- 文件包含漏洞和上传漏洞
- 科技复原,3000多前年的木乃伊「发声」了
- c语言达内月考试题,达内C培训第一次月考〔附答案〕.doc
- asp长度为4的随机数字写
- Unity2019.4—AnroidStudio—AndroidX接入SDK详细版
- Unity Android 接入高德定位SDK
- LiDAR点云处理软件
- linux不能显示文本文件内容的命令,Linux之文本文件查看命令
- ASP.NET验证控件祥解 (选择自 rko 的 Blog )
热门文章
- android好用的NFC软件,5个有用的NFC应用程序为Android,以利于NFC | MOS86
- 中秋节快到了,一起用MATLAB绘制一款2.5D月饼叭
- 在Linux环境下通过百度网盘下载并安装matlab2017a
- 制作Android系统App
- [Style Transfer]—Combining Markov Random Fields and Convolutional Neural Network for Image Synthesis
- 我如何使用smartwatch传感器限制covid 19感染
- maven 本地仓库的配置以及如何修改默认.m2仓库位置
- linux控制NVme硬盘点灯,一种实现多NVMe硬盘背板点灯的设计方法与流程
- OA课程--word2013实用技巧大全-目录
- background背景图片铺满背景并且不重复