拼题 A 的教超搞打卡活动,指定了 N 张打卡卷,第 i 张打卡卷需要 mi​ 分钟做完,完成后可获得 ci​ 枚奖励的金币。活动规定每张打卡卷最多只能做一次,并且不允许提前交卷。活动总时长为 M 分钟。请你算出最多可以赢得多少枚金币?

输入格式:

输入首先在第一行中给出两个正整数 N(≤103) 和 M(≤365×24×60),分别对应打卡卷的数量和以“分钟”为单位的活动总时长(不超过一年)。随后一行给出 N 张打卡卷要花费的时间 mi​(≤600),最后一行给出 N 张打卡卷对应的奖励金币数量 ci​(≤30)。上述均为正整数,一行内的数字以空格分隔。

输出格式:

在一行中输出最多可以赢得的金币数量。

输入样例:

5 110
70 10 20 50 60
28 1 6 18 22

输出样例:

40

样例解释:

选择最后两张卷子,可以在 50+60=110 分钟内获得 18+22=40 枚金币。

本题思路

非常明确的01背包问题,但是本题数据量非常的大,365*24*60这个数据量非常大,Java直接内存超限,c++时间会超限,显然本题并不是单单使用模板可以解决的,本题首先要对数据进行分析,可以发现时间是巨大的但是,ai<=30,并且N<=1000,也就是说如果本题使用金币的话,最大也不过30*1000,数据量要小的多,所以本题的思路就改变成,在固定金币之下,我们使用最少多少的空间,本题在寻找答案时,需要从大到小遍历,如果出现所需质量小于等于m的就输出

同时,因为数据量依然很大,所以我们需要对01背包进行空间优化

其实优化的原因就是,本身01背包其实就是对上层有依赖性,那么其实我们本身就可以不用分配那么多行而是使用2层,一层代表当前层,一层代表上一层,这样就可以优化到两行,但其实我们还可以发现,在对数据的使用时,我们只用使用前一层的左边也就是i小的部分,那么我们就可以优化,我们从后方,也就是从n开始,那么其实我每次后方的更新没有影响到,前方的数据,如此就可以实现一维数组实现空间优化,但是要注意要从后方向前跑,不然数据会相互影响.

这个空间优化还是比较好理解的,可以自己画图求解

下面上代码

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.io.StreamTokenizer;
import java.util.Arrays;public class Main拼题A打卡奖励 {public static void main(String[] args) throws IOException {StreamTokenizer x=new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));PrintWriter out=new PrintWriter(System.out);x.nextToken();int n=(int)x.nval;x.nextToken();int m=(int)x.nval;int jz[]=new int[n+1];int zl[]=new int[n+1],sum=0;for(int i=1;i<=n;i++) {x.nextToken();zl[i]=(int)x.nval;}for(int i=1;i<=n;i++) {x.nextToken();jz[i]=(int)x.nval;sum+=jz[i];//统计金币工有多少}int dp[]=new int[30010];Arrays.fill(dp, 99999999);//注意如果使用Integer.MAX_VALUE,这个值是int最大,在之后会发生+运算,那么就会溢出变成-数影响答案dp[0]=0;for(int i = 1; i <= n; i++){for(int j = sum; j >= jz[i]; j--){// dp自后向前dp[j] = Math.min(dp[j],dp[j-jz[i]] + zl[i]);}}for(int i=sum;i>=0;i--)if(dp[i]<=m) {//从大金币到小金币,第一个满足不超过m的就是最大金币数out.println(i);break;}out.flush();}}

PTA模拟赛 拼题A打卡奖励相关推荐

  1. 天梯22模拟 L3-2 拼题A打卡奖励 (30 分)

    L3-2 拼题A打卡奖励 (30 分) 拼题 A 的教超搞打卡活动,指定了 N 张打卡卷,第 i 张打卡卷需要 m i 分钟做完,完成后可获得 c i 枚奖励的金币.活动规定每张打卡卷最多只能做一次, ...

  2. 7-2 拼题A打卡奖励 dp

    7-2 拼题A打卡奖励 分数 25 作者 陈越 单位 浙江大学 拼题 A 的教超搞打卡活动,指定了 N 张打卡卷,第 i 张打卡卷需要 m i ​ 分钟做完,完成后可获得 c i ​ 枚奖励的金币.活 ...

  3. 拼题A打卡奖励 (25 分),1355D,1362C;

    7-2 拼题A打卡奖励 (25 分)(背包) 题意: 求,从 n 个物品中选(每个物品有体积 vi, 价值 wi ),总体积不超过 m 的最大价值? n≤1e3,m≤7e5,vi≤600,wi≤30n ...

  4. L3-2 拼题A打卡奖励 (30 分)

    Powered by:NEFU AB-IN Link 文章目录 L3-2 拼题A打卡奖励 (30 分) 题意 思路 代码 L3-2 拼题A打卡奖励 (30 分) 题意 拼题 A 的教超搞打卡活动,指定 ...

  5. [dp]拼题A打卡奖励 2021RoboCom复赛B

    拼题 A 的教超搞打卡活动,指定了 N 张打卡卷,第 i 张打卡卷需要 mi​ 分钟做完,完成后可获得 ci​ 枚奖励的金币.活动规定每张打卡卷最多只能做一次,并且不允许提前交卷.活动总时长为 M 分 ...

  6. 2021 RoboCom 复赛 7-2 拼题A打卡奖励(背包)

    样例输入: 5 110 70 10 20 50 60 28 1 6 18 22 样例输出: 40 分析:一开始看这道题我以为就是一个普通的背包问题,然后我就按照普通的背包问题写了代码,交上后发现有几个 ...

  7. 2020年 第11届 蓝桥杯 第2次模拟赛真题详解及小结【Java版】

    蓝桥杯 Java B组 省赛真题详解及小结汇总[2013年(第4届)~2020年(第11届)] 注意:部分代码及程序 源自 蓝桥杯 官网视频(历年真题解析) 郑未老师. 2013年 第04届 蓝桥杯 ...

  8. 2021年 第12届 蓝桥杯 第4次模拟赛真题详解及小结【Java版】

    蓝桥杯 Java B组 省赛决赛 真题详解及小结汇总[2013年(第4届)~2021年(第12届)] 第11届 蓝桥杯-第1.2次模拟(软件类)真题-(2020年3月.4月)-官方讲解视频 说明:大部 ...

  9. 2021年 第12届 蓝桥杯 第3次模拟赛真题详解及小结【Java版】

    蓝桥杯 Java B组 省赛决赛 真题详解及小结汇总[2013年(第4届)~2021年(第12届)] 第11届 蓝桥杯-第1.2次模拟(软件类)真题-(2020年3月.4月)-官方讲解视频 说明:大部 ...

最新文章

  1. python flask高级编程之restful_('Python Flask高级编程之RESTFul API前后端分离精讲',),全套视频教程学习资料通过百度云网盘下载...
  2. DBA表现最好的7个习惯
  3. [YTU]_2638(编程题:多态--动物叫)
  4. Python可变数据类型高效编程
  5. 图文解释Glados自动签到免费获取天数(腾讯云函数serverless版)
  6. 写给大数据开发初学者的话3
  7. R语言对数线性模型loglm函数_R 对数变换 《回归分析与线性统计模型》page103
  8. linux运行powershell,linux – 是否可以编写一个在bash / shell和PowerShell中运行的脚本?...
  9. 博客侧栏添加恋爱计时框
  10. wincc服务器系统,什么情况下用wincc服务器与客户端
  11. c语言写入文件后换行,关于文件操作,碰到空格就换行
  12. thinkphp3.2加载第三方函数库
  13. linux管道命令sudo,那些超有趣的Linux命令——第一弹
  14. Ubuntu使用记录:安装deb软件方法以及apt、apt-get和dpkg的区别
  15. JMeter常用的4种参数化方式-操作解析
  16. CPU+GPU异构集群搭建的总结说明
  17. Cisco-小型网络拓扑(DNS、DHCP、网站服务器、无线路由器)
  18. matlab均值方差模型,马科维茨均值方差模型的Matlab实现(10页)-原创力文档
  19. Spring注解开发学习笔记
  20. 小篮子玩意儿、你苏爷就是扣字神话不服气么。

热门文章

  1. 游戏主程的2018年终总结:从开发到上线,这些事很重要
  2. 教务管理系统数据表关系图_浙江工商大学教务处
  3. 慕尼黑工业大学计算机博士申请条件,德国慕尼黑工业大学录取要求的三个评分标准...
  4. SQL Server 安装文件挂起错误解决办法
  5. IDC:2020年中国云计算市场十大预测
  6. 用友u8库存管理操作教程
  7. 学习《TensorFlow实战Google深度学习框架 (第2版) 》中文PDF和代码
  8. JAVA如何正确地处理时间/时区
  9. 一文详解微服务分布式架构
  10. cdr对象管理器怎么用_CorelDRAW中默认对象属性管理教程-cdr默认对象属性设置方法_好特教程...