7-2 拼题A打卡奖励
分数 25
作者 陈越
单位 浙江大学
拼题 A 的教超搞打卡活动,指定了 N 张打卡卷,第 i 张打卡卷需要 m
i

分钟做完,完成后可获得 c
i

枚奖励的金币。活动规定每张打卡卷最多只能做一次,并且不允许提前交卷。活动总时长为 M 分钟。请你算出最多可以赢得多少枚金币?

输入格式:
输入首先在第一行中给出两个正整数 N(≤10
3
) 和 M(≤365×24×60),分别对应打卡卷的数量和以“分钟”为单位的活动总时长(不超过一年)。随后一行给出 N 张打卡卷要花费的时间 m
i

(≤600),最后一行给出 N 张打卡卷对应的奖励金币数量 c
i

(≤30)。上述均为正整数,一行内的数字以空格分隔。

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

输入样例:
5 110
70 10 20 50 60
28 1 6 18 22
输出样例:
40
样例解释:
选择最后两张卷子,可以在 50+60=110 分钟内获得 18+22=40 枚金币。

#include<bits/stdc++.h>
using namespace std;
const int N=1004;
const int INF=0x3f3f3f3f;
int n,m;
int w[N],v[N];
//int f[N][10000];
int dp[N][30005];//前i个物品中得到价值为j时候的最小花费 //ans为dp[n][j]<m时最大的j
int mv=0;int main()
{//  cout<<365*60*24;cin>>n>>m;for(int i=1;i<=n;++i)cin>>w[i];for(int i=1;i<=n;++i){cin>>v[i];mv+=v[i];}// 01背包写法,空间不够,而且也会超时,因为“花费”这一维度规模比较大,而递推时需要一一枚举
//      for(int i=1;i<=n;++i)
//      for(int j=0;j<=m;++j)
//      {//          if(j>=w[i])
//          f[i][j]=max(f[i-1][j],f[i-1][j-w[i]]+v[i]);
//          else f[i][j]=f[i-1][j];
//      }//下面是另一种思路,第二维换成价值//初始化 for(int i=0;i<=n;++i){for(int j=0;j<=mv;++j){dp[i][j]=INF; }}dp[0][0]=0;//递归过程:分为取第i个和不取第i个for(int i=1;i<=n;++i){for(int j=0;j<=mv;++j){if(j>=v[i])//注意边界dp[i][j]=min(dp[i-1][j-v[i]]+w[i],dp[i-1][j]);else dp[i][j]=dp[i-1][j];}}//可以改进递推过程:由于递归方程中两个来源都是上一个i的,去掉第一个维度,节省空间,注意这时候j要从大到小迭代,才能保证递推过程中的dp[j-v[i]]是来源于i-1而不是i
//      for(int i=1;i<=n;++i)
//      {//          for(int j=mv;j>=0;--j)
//          {//              if(j>v[i])
//              dp[j]=min(dp[j-v[i]]+w[i],dp[j]);
//              else
//              dp[j]=dp[j];
//      }//取答案:最小花费在给定的m内的最大价值for(int j=mv;j>=0;j--){if(dp[n][j]<=m){cout<<j;break;}}//   cout<<f[n][m];return 0;
}

空间优化版本:

#include<bits/stdc++.h>
using namespace std;
const int N=1004;
const int INF=0x3f3f3f3f;
int n,m;
int w[N],v[N];int dp[30005];//前i个物品中得到价值为j时候的最小花费 //ans为dp[n][j]<m时最大的j
int mv=0;int main()
{//  cout<<365*60*24;cin>>n>>m;for(int i=1;i<=n;++i)cin>>w[i];for(int i=1;i<=n;++i){cin>>v[i];mv+=v[i];}for(int j=0;j<=mv;++j){dp[j]=INF; }dp[0]=0;for(int i=1;i<=n;++i){for(int j=mv;j>=0;--j){if(j>=v[i])dp[j]=min(dp[j-v[i]]+w[i],dp[j]);else dp[j]=dp[j];}}//取答案:最小花费在给定的m内的最大价值for(int j=mv;j>=0;j--){if(dp[j]<=m){cout<<j;break;}}//   cout<<f[n][m];return 0;
}

7-2 拼题A打卡奖励 dp相关推荐

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

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

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

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

  3. PTA模拟赛 拼题A打卡奖励

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

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

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

  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. PTA-拼题A打卡奖励

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

  8. 拼题A 7-7 计算存款利息

    拼题A 7-7 计算存款利息 (20分) 本题目要求计算存款利息,计算公式为interest=money×(1+rate) ​year ​​ −money,其中interest为存款到期时的利息(税前 ...

  9. Pintia(拼题A)刷题插件 on VS Code

    开发背景 初次在拼题A(Pintia)上刷题是在2019年的暑假,使用的首选语言是 C++,编辑器则以 VS Code 为主.VS Code 由于其免费.轻量以及插件库丰富的特性,吸引了越来越多的开发 ...

最新文章

  1. qt获取combobox的值_Qt官方示例嵌套甜甜圈
  2. html页面配置xml文件路径,web.xml与index.html
  3. android 宏替换_android 模拟宏定义,实现Debug amp; Release 模式-一团网
  4. centos7 安装、使用git
  5. 播放提示音+页面右下角提示框
  6. Java ObjectInputStream readUnsignedShort()方法(带示例)
  7. java jsp 图片上传_jsp 图片上传代码
  8. 【Effective c++】条款6:若不想使用编译器自动生成的函数就应该明确拒绝
  9. 关于DynamipsGUI idle-pc值的取值问题
  10. visio怎么画球_快速学习Visio 门球制图
  11. 捷径app 未能连接到服务器,iOS13快捷指令无法添加第三方捷径的解决办法
  12. 技术岗-网上测评智力题
  13. redis进行对比时有对应的key却还是返回false
  14. canvas实现图片旋转
  15. Jump gameII
  16. 【Mac 教程系列第 10 篇】如何在 Mac 上破解带有密码的 ZIP 压缩文件
  17. RC专题:阻容串并联电路
  18. Win7系统DNS服务器未响应的解决办法【系统天地】
  19. 聊聊iOS中的网络加密
  20. 联芸MAP1002+群联封装的JGS CA7AG64AOA简单开卡与测试,附开卡工具下载

热门文章

  1. 29、酷家乐面试算法题
  2. 案例:无论 person 是否有地址信息,都需要基于上述两表提供 person 的以下信息:FirstName, LastName, City, State
  3. 7. Jackson用树模型处理JSON是必备技能,不信你看
  4. 用友U8案例教程库存报表
  5. android 4g手机6,2016年中国手机用户已超13亿,6.46亿为4G用户
  6. 【AI】Android Pie中引入的AI功能盘点
  7. 基于人脸识别的公司考勤门禁系统的设计---笔记
  8. 图像的小波变换处理(一)
  9. 【图像处理】基于matlab拉普拉斯金字塔图像融合
  10. [转]linux下基于SMP架构的多队列网卡的调优(Multi-queue network interfaces with SMP on Linux)