入学考试 -- 蓝桥杯
来源:互联网 发布:故宫淘宝 月饼 编辑:程序博客网 时间:2024/09/21 09:05
问题描述
辰辰是个天资聪颖的孩子,他的梦想是成为世界上最伟大的医师。为此,他想拜附近最有威望的医师为师。医师为了判断他的资质,给他出了一个难题。医师把他带到一个到处都是草药的山洞里对他说:“孩子,这个山洞里有一些不同的草药,采每一株都需要一些时间,每一株也有它自身的价值。我会给你一段时间,在这段时间里,你可以采到一些草药。如果你是一个聪明的孩子,你应该可以让采到的草药的总价值最大。”
如果你是辰辰,你能完成这个任务吗?
如果你是辰辰,你能完成这个任务吗?
输入格式
第一行有两个整数T(1 <= T <= 1000)和M(1 <= M <= 100),用一个空格隔开,T代表总共能够用来采药的时间,M代表山洞里的草药的数目。接下来的M行每行包括两个在1到100之间(包括1和100)的整数,分别表示采摘某株草药的时间和这株草药的价值。
输出格式
包括一行,这一行只包含一个整数,表示在规定的时间内,可以采到的草药的最大总价值。
样例输入
70 3
71 100
69 1
1 2
71 100
69 1
1 2
样例输出
3
数据规模和约定
对于30%的数据,M <= 10;
对于全部的数据,M <= 100。
对于全部的数据,M <= 100。
又是一个典型的01背包问题,每种药材有采和不采两种选择,只要选择出这两种情况中最优的那种就可以了,用max[i][j] 表示在i时间内采t株药,可以获得的最大价值。
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner input=new Scanner(System.in);int t,m;t=input.nextInt();m=input.nextInt();int v[]=new int[m+1];int p[]=new int[m+1];int max[][]=new int[t+1][m+1];for(int i=1;i<=m;i++){v[i]=input.nextInt();p[i]=input.nextInt();}input.close();for(int i=1;i<=t;i++){for(int j=1;j<=m;j++){if(i<v[j])max[i][j]=max[i][j-1];elsemax[i][j]=Math.max(max[i-v[j]][j-1]+p[j], max[i][j-1]);}}System.out.println(max[t][m]);}}
阅读全文
0 0
- 蓝桥杯-入学考试
- 入学考试 -- 蓝桥杯
- <蓝桥杯>基础训练之入学考试
- 入学考试
- 入学考试
- 入学考试
- 蓝桥杯 ALGO30 算法训练 入学考试 java版
- 动态规划-蓝桥杯-入学考试-采草药问题
- 蓝桥杯——说好的进阶之入学考试
- 建筑学入学考试
- A1153. 入学考试
- 蓝桥杯 ALGO-30算法训练 入学考试(01背包,动态规划)
- 北京电影学院入学考试试卷
- 参加入学考试的体会
- 入学考试 CM3 注册机
- 入学考试--采药问题
- 算法训练 入学考试
- 算法训练 入学考试
- 利用python实现简单的邮件发送客户端
- 关系数据库标准语言SQL
- 最短路径—Dijkstra算法和Floyd算法
- 2018 年你需要知道的 Vue.js 组件库,完善你的应用开发
- 【代码练习8】UDP协议实现局域网屏幕广播功能
- 入学考试 -- 蓝桥杯
- 二叉树中的最大路径和
- NoteHighLight--OneNote代码高亮插件
- Struts 2中的constant配置详解
- 错误:编码GBK的不可映射字符
- linux字符设备完全分析(一)
- 51nod 1338 找格子 费用流
- Linux virtualbox 开机进不去图形化界面,停留在文本界面解决方法
- 2017-12-21php学习基础巩固第三天