OpenJudge 2773 2726 2727 采药
1.链接地址:
http://bailian.openjudge.cn/practice/2773/
http://bailian.openjudge.cn/practice/2726/
http://bailian.openjudge.cn/practice/2727/
2.题目:
- 总Time Limit:
- 1000ms
- Memory Limit:
- 65536kB
- Description
- 辰辰是个很有潜能、天资聪颖的孩子,他的梦想是称为世界上最伟大的医师。为此,他想拜附近最有威望的医师为师。医师为了判断他的资质,给他出 了一个难题。医师把他带到个到处都是草药的山洞里对他说:“孩子,这个山洞里有一些不同的草药,采每一株都需要一些时间,每一株也有它自身的价值。我会给 你一段时间,在这段时间里,你可以采到一些草药。如果你是一个聪明的孩子,你应该可以让采到的草药的总价值最大。”
如果你是辰辰,你能完成这个任务吗?
- Input
- 输入的第一行有两个整数T(1 <= T <= 1000)和M(1 <= M <=
100),T代表总共能够用来采药的时间,M代表山洞里的草药的数目。接下来的M行每行包括两个在1到100之间(包括1和100)的的整数,分别表示采
摘某株草药的时间和这株草药的价值。- Output
- 输出只包括一行,这一行只包含一个整数,表示在规定的时间内,可以采到的草药的最大总价值。
- Sample Input
70 3
71 100
69 1
1 2- Sample Output
3- Source
- NOIP 2005
3.思路:
背包问题,dp模板题
由于规模小,直接使用未优化的背包问题解法即可
4.题目:
提供两个版本的答案
(1)未优化数组的,比较容易看懂
#include <iostream>
#include <cstdio> using namespace std; int main()
{
//freopen("C://input.txt","r",stdin); int i,j; int t,m;
cin >> t >> m; int *arr_time = new int[m];
int *arr_value = new int[m]; for(i = ;i < m; ++i) cin >> arr_time[i] >> arr_value[i]; int **dp = new int*[m];
for(i = ;i < m; ++i) dp[i] = new int[t + ]; for(i = ; i < arr_time[m - ] && i <= t; ++i) dp[m - ][i] = ;
for(i = arr_time[m - ]; i <= t; ++i) dp[m - ][i] = arr_value[m - ]; for(i = m - - ; i >= ; --i)
{
for(j = ; j < arr_time[i] && j <= t; ++j) dp[i][j] = dp[i + ][j];
for(j = arr_time[i]; j <= t; ++j) dp[i][j] = dp[i + ][j] > (dp[i + ][j - arr_time[i]] + arr_value[i]) ? dp[i + ][j] : (dp[i + ][j - arr_time[i]] + arr_value[i]);
} int max = ;
for(j = ; j <= t; ++j) if(max < dp[][j]) max = dp[][j]; cout << max << endl; for(i = ; i < m; ++i) delete [] dp[i];
delete [] dp; delete [] arr_time;
delete [] arr_value; return ;
}
(2)优化数组的
#include <iostream>
#include <cstdio>
#include <cstring> using namespace std; int main()
{
//freopen("C://input.txt","r",stdin); int i,j; int t,m;
cin >> t >> m; int *arr_time = new int[m];
int *arr_value = new int[m]; for(i = ;i < m; ++i) cin >> arr_time[i] >> arr_value[i]; int *dp = new int[t + ];
memset(dp,,sizeof(int) * (t + )); for(i = m - ; i >= ; --i)
{
for(j = t; j >= arr_time[i]; --j) dp[j] = dp[j] > (dp[j - arr_time[i]] + arr_value[i]) ? dp[j] : (dp[j - arr_time[i]] + arr_value[i]);
} int max = ;
for(j = ; j <= t; ++j) if(max < dp[j]) max = dp[j]; cout << max << endl; delete [] dp; delete [] arr_time;
delete [] arr_value; return ;
}
OpenJudge 2773 2726 2727 采药的更多相关文章
- Bzoj索引
1001 : http://ideone.com/4omPYJ1002 : http://ideone.com/BZr9KF1003 : http://ideone.com/48NJNh1004 : ...
- Hsql中In没有1000的限制
SELECT * FROM user , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ...
- jqu
1 /*2 * 说明:3 * 本源代码的中文注释乃Auscarlin呕心沥血所作.旨在促进jQuery的传播以及向广大jQuery爱好者提供一个进阶4 *的途径,以让各位更加深入地了解jQuery,学 ...
- JS逆向-抠代码的第二天【手把手学会抠代码】
今天的学习项目:沃支付:https://epay.10010.com/auth/login 清空浏览器缓存后,打开网页,输入手机号,密码222222,按照网站要求填入验证码(sorry,我没有账号密码 ...
- elf.h
1 /* This file defines standard ELF types, structures, and macros. 2 Copyright (C) 1995-2019 Free So ...
- [OpenJudge] 2727 仙岛寻药
2727:仙岛求药 查看 提交 统计 提问 总时间限制: 1000ms 内存限制: 65536kB 描述 少年李逍遥的婶婶病了,王小虎介绍他去一趟仙灵岛,向仙女姐姐要仙丹救婶婶.叛逆但孝顺的李逍遥闯进 ...
- OpenJudge 2727 仙岛求药
总时间限制: 1000ms 内存限制: 65536kB 描述 少年李逍遥的婶婶病了,王小虎介绍他去一趟仙灵岛,向仙女姐姐要仙丹救婶婶.叛逆但孝顺的李逍遥闯进了仙灵岛,克服了千险万难来到岛的中心,发 ...
- 【noip 2005】 采药
题目描述 辰辰是个天资聪颖的孩子,他的梦想是成为世界上最伟大的医师.为此,他想拜附近最有威望的医师为师.医师为了判断他的资质,给他出了一个难题.医师把他带到一个到处都是草药的山洞里对他说:" ...
- 【OpenJudge 8463】Stupid cat & Doge
http://noi.openjudge.cn/ch0204/8463/ 挺恶心的一道简单分治. 一开始准备非递归. 大if判断,后来发现代码量过长,决定大打表判断后继情况,后来发现序号不对称. 最后 ...
随机推荐
- SQLite使用教程5 分离数据库
http://www.runoob.com/sqlite/sqlite-detach-database.html SQLite 分离数据库 SQLite的 DETACH DTABASE 语句是用来把命 ...
- iOS 强制横屏
// // AAAAViewController.m // hengp // // Created by 朱信磊 on 15/2/13. // Copyright (c) 2015年 niit. Al ...
- hdu 5445 Food Problem 多重背包
Food Problem Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=5 ...
- PHP PDO函数库具体解释
文章来源:PHP开发学习门户 地址:http://www.phpthinking.com/archives/565 PDO是一个"数据库訪问抽象层",作用是统一各种数据库的訪问接口 ...
- java大数总结【转】
java大数(2013长春网络赛)--hdu4762总结一下:1.java提交类要写Main.2.读取大数. Scanner read=new Scanner(System.in); BigInteg ...
- Support Facades
Support Facades Introduction Facades provide a "static" interface to classes that are avai ...
- ajax的一部分知识
jquery中的ajax方法参数总是记不住,这里记录一下. 1.url: 要求为String类型的参数,(默认为当前页地址)发送请求的地址. 2.type: 要求为String类型的参数,请求方式(p ...
- Intent的介绍
一.Intent的介绍 Intent的中文意思是“意图,意向”,在Android中提供了Intent机制来协助应用间的交互与通讯,Intent负责对应用中一次操作 的动作.动作涉及数据.附加数据进行描 ...
- 210 - Concurrency Simulator(WF1991, deque, 模拟)
题目有点长,理解题花了不少时间 粘下别人的翻译~ 你的任务是模拟n个程序(按输入顺序编号为1~n)的并行执行.每个程序包含不超过25条语句,格式一共有5种: var=constant(赋值): pri ...
- c# 远程监控(4) 接收端 RTP包重组 分屏显示
我们在上一期使用RTP协议,并进行了配置,打包了视频数据,这一期我们就对发送的数据进行重组,并显示在接受端上.最后对其进行扩展,支持多客户端视频发送,并在接收端分屏显示.完成远程监控的模拟. 先来个效 ...