OpenJudge / Poj 1928 The Peanuts C++
链接地址:http://bailian.openjudge.cn/practice/1928
题目:
- 总时间限制:
- 1000ms
- 内存限制:
- 65536kB
- 描述
- Mr. Robinson and his pet monkey Dodo love peanuts very much. One day while they were having a walk on a country road, Dodo found a sign by the road, pasted with a small piece of paper, saying "Free Peanuts Here! " You can imagine how happy Mr. Robinson and Dodo were.
There
was a peanut field on one side of the road. The peanuts were planted
on the intersecting points of a grid as shown in Figure-1. At each
point, there are either zero or more peanuts. For example, in Figure-2,
only four points have more than zero peanuts, and the numbers are 15,
13, 9 and 7 respectively. One could only walk from an intersection
point to one of the four adjacent points, taking one unit of time. It
also takes one unit of time to do one of the following: to walk from
the road to the field, to walk from the field to the road, or pick
peanuts on a point.
According
to Mr. Robinson's requirement, Dodo should go to the plant with the
most peanuts first. After picking them, he should then go to the next
plant with the most peanuts, and so on. Mr. Robinson was not so patient
as to wait for Dodo to pick all the peanuts and he asked Dodo to return
to the road in a certain period of time. For example, Dodo could pick
37 peanuts within 21 units of time in the situation given in Figure-2.Your
task is, given the distribution of the peanuts and a certain period of
time, tell how many peanuts Dodo could pick. You can assume that each
point contains a different amount of peanuts, except 0, which may appear
more than once.- 输入
- The first line of input contains the test case number T (1 <= T
<= 20). For each test case, the first line contains three integers,
M, N and K (1 <= M, N <= 50, 0 <= K <= 20000). Each of the
following M lines contain N integers. None of the integers will exceed
3000. (M * N) describes the peanut field. The j-th integer X in the
i-th line means there are X peanuts on the point (i, j). K means Dodo
must return to the road in K units of time.- 输出
- For each test case, print one line containing the amount of peanuts Dodo can pick.
- 样例输入
2
6 7 21
0 0 0 0 0 0 0
0 0 0 0 13 0 0
0 0 0 0 0 0 7
0 15 0 0 0 0 0
0 0 0 9 0 0 0
0 0 0 0 0 0 0
6 7 20
0 0 0 0 0 0 0
0 0 0 0 13 0 0
0 0 0 0 0 0 7
0 15 0 0 0 0 0
0 0 0 9 0 0 0
0 0 0 0 0 0 0- 样例输出
37
28- 来源
- Beijing 2004 Preliminary@POJ
思路:
每次采摘前计算是否能够采摘,模拟题
代码:
#include <iostream>
#include <cstdlib>
using namespace std; int main()
{
int t;
cin>>t;
while(t--)
{
int m,n,k;
cin>>m>>n>>k;
int *arr = new int[m*n];
for(int i = ; i < m; i++)
{
for(int j = ; j < n; j++)
{
cin>>arr[i * n + j];
}
}
int sum = ,ni=,nj;
int max,maxi,maxj;
k -= ;
int flag = ;
do
{
max = -;
for(int i = ; i < m; i++)
{
for(int j = ; j < n; j++)
{
if(max < arr[i * n + j])
{
max = arr[i * n + j];
maxi = i;
maxj = j;
}
}
}
if(flag) {nj = maxj;flag = ;}
int step = abs(maxi - ni) + abs(maxj - nj) + ;
if(step + maxi > k) break;
else
{
k -= step;
sum += max;
ni = maxi;
nj = maxj;
arr[maxi * n + maxj] = ;
} }while();
cout<<sum<<endl;
delete [] arr;
}
return ;
}
OpenJudge / Poj 1928 The Peanuts C++的更多相关文章
- OpenJudge / Poj 2141 Message Decowding
1.链接地址: http://poj.org/problem?id=2141 http://bailian.openjudge.cn/practice/2141/ 2.题目: Message Deco ...
- OpenJudge/Poj 2105 IP Address
1.链接地址: http://poj.org/problem?id=2105 http://bailian.openjudge.cn/practice/2105 2.题目: IP Address Ti ...
- OpenJudge/Poj 2027 No Brainer
1.链接地址: http://bailian.openjudge.cn/practice/2027 http://poj.org/problem?id=2027 2.题目: 总Time Limit: ...
- OpenJudge/Poj 2013 Symmetric Order
1.链接地址: http://bailian.openjudge.cn/practice/2013 http://poj.org/problem?id=2013 2.题目: Symmetric Ord ...
- OpenJudge/Poj 1088 滑雪
1.链接地址: bailian.openjudge.cn/practice/1088 http://poj.org/problem?id=1088 2.题目: 总Time Limit: 1000ms ...
- OpenJudge/Poj 2001 Shortest Prefixes
1.链接地址: http://bailian.openjudge.cn/practice/2001 http://poj.org/problem?id=2001 2.题目: Shortest Pref ...
- OpenJudge/Poj 2000 Gold Coins
1.链接地址: http://bailian.openjudge.cn/practice/2000 http://poj.org/problem?id=2000 2.题目: 总Time Limit: ...
- OpenJudge/Poj 1936 All in All
1.链接地址: http://poj.org/problem?id=1936 http://bailian.openjudge.cn/practice/1936 2.题目: All in All Ti ...
- OpenJudge/Poj 1661 帮助 Jimmy
1.链接地址: bailian.openjudge.cn/practice/1661 http://poj.org/problem?id=1661 2.题目: 总Time Limit: 1000ms ...
随机推荐
- python(6)
python(6) 6.1 面向对象编程:OOP相信学过编程的就会了解它有多重要了.当然c什么的就算了 实际上面向对象就是把对象拥有的数据和方法封装在对象里面,由对象调用. 面向对象最重要的是类 ...
- Ant-关键元素(笔记一)
需求:使用ant脚本在控制台输出一句话 <?xml version="1.0" encoding="utf-8"?> <project nam ...
- C/C++语言中#的神奇作用:把宏参数字符串化/贴合宏参数
宏中"#"和"##"的用法 一.一般用法 我们使用#把宏参数变为一个字符串,用##把两个宏参数贴合在一起. #define STR(s) #s # ...
- JQuery.Ajax之错误调试帮助信息介绍
下面是Jquery中AJAX参数详细列表: timeout Number 设置请求超时时间(毫秒).此设置将覆盖全局设置. async Boolean (默认: true) 默认设置下,所有请求均为异 ...
- Android从入门到精通pdf+书源代码
不须要积分,免费放送 Android从入门到精通的pdf,入门的好书籍,因为csdn文件大小的限制所以分成了两部分. part1地址:http://download.csdn.net/detail/a ...
- ASC(1)G(上升时间最长的序列)
G - Beautiful People Time Limit: 10000/5000MS (Java/Others) Memory Limit: 128000/64000KB (Java/Other ...
- 编写程序,查找并删除forward_list<int>中的奇数元素
#include<iostream> #include<forward_list> using namespace std; int main() { forward_list ...
- C++如何用system命令获取文件夹下所有文件名
http://www.cplusplus.com/reference/cstdlib/system/ http://bbs.csdn.net/topics/30068943 #include < ...
- [Effective C++ --016]成对使用New和Delete时要采用相同形式
这一节比较简单,可以总结为以下: std::string *stringPtr1 = new std::string; std::]; .. delete stringPtr1; // delete ...
- linux 命令学习日记 20160621
1.cat /proc/meminfo 观察Linux系统上虚拟内存的当前状态 2.ipcs -m ipcs命令专门用来查看系统上的当前共享内存页面 3.ls /dev -al sda* ttyS* ...