P1086 花生采摘
题目描述
鲁宾逊先生有一只宠物猴,名叫多多。这天,他们两个正沿着乡间小路散步,突然发现路边的告示牌上贴着一张小小的纸条:“欢迎免费品尝我种的花生!――熊字”。
鲁宾逊先生和多多都很开心,因为花生正是他们的最爱。在告示牌背后,路边真的有一块花生田,花生植株整齐地排列成矩形网格(如图)。有经验的多多一眼就能看出,每棵花生植株下的花生有多少。为了训练多多的算术,鲁宾逊先生说:“你先找出花生最多的植株,去采摘它的花生;然后再找出剩下的植株里花生最多的,去采摘它的花生;依此类推,不过你一定要在我限定的时间内回到路边。”
我们假定多多在每个单位时间内,可以做下列四件事情中的一件:
从路边跳到最靠近路边(即第一行)的某棵花生植株;
从一棵植株跳到前后左右与之相邻的另一棵植株;
采摘一棵植株下的花生;
从最靠近路边(即第一行)的某棵花生植株跳回路边。
现在给定一块花生田的大小和花生的分布,请问在限定时间内,多多最多可以采到多少个花生?注意可能只有部分植株下面长有花生,假设这些植株下的花生个数各不相同。
例如在图2所示的花生田里,只有位于(2, 5), (3, 7), (4, 2), (5, 4)的植株下长有花生,个数分别为13, 7, 15, 9。沿着图示的路线,多多在21个单位时间内,最多可以采到37个花生。
输入格式
第一行包括三个整数,M, N,和K,用空格隔开;表示花生田的大小为M×N(1≤M,N≤20),多多采花生的限定时间K(0≤K≤1000)个单位时间。接下来的M行,每行包括N个非负整数,也用空格隔开;第i + 1行的第j个整数P(i,j)表示花生田里植株(i, j)下花生的数目,0表示该植株下没有花生。
输出格式
一个整数,即在限定时间内,多多最多可以采到花生的个数。
输入输出样例
输入
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
输出
37
输入
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
输出
28
一个优先队列+重载。
priority_queue<NODE>nut;bool operator<(NODE A,NODE B)
#include<queue>
#include<cstdio>
#include<cmath>
using namespace std;
struct NODE{int x,y;int weight;
}peanut;
bool operator<(NODE A,NODE B)
{return A.weight<B.weight;
}
int main(void)
{priority_queue<NODE>nut;int m,n,k;scanf("%d%d%d",&m,&n,&k);for(int i=1;i<=m;i++){for(int j=1;j<=n;j++){int a;scanf("%d",&a);if(a!=0){peanut.x=i;peanut.y=j;peanut.weight=a;nut.push(peanut);}}}int time;time=0;int ans=0;int flag=0;NODE tep;while(nut.size()!=0){peanut=nut.top();if(flag==0)//第一次采花生{time+=peanut.x+1;//收取了花生用时if(time+peanut.x>k) break;ans+=peanut.weight; flag=1;}else{//判断时间time+=abs(tep.x-peanut.x)+abs(tep.y-peanut.y)+1; if(time+peanut.x>k) break;ans+=peanut.weight;}tep=peanut;nut.pop();}printf("%d\n",ans);
}
P1086 花生采摘相关推荐
- 洛谷 P1086 花生采摘
P1086 花生采摘 题目描述 鲁宾逊先生有一只宠物猴,名叫多多.这天,他们两个正沿着乡间小路散步,突然发现路边的告示牌上贴着一张小小的纸条:"欢迎免费品尝我种的花生!――熊字". ...
- 洛谷P1086花生采摘c语言
洛谷P1086花生采摘 最近在学习洛谷上的题,以后会持续更新的 文章目录 **洛谷P1086花生采摘** 思想 代码 题目描述 输入格式 思想 具体思想利用深搜,算出他剩下的时间是否足够采摘下一个花生 ...
- 信息学奥赛一本通 1927:【04NOIP普及组】花生采摘 | OpenJudge NOI 1.13 38:花生采摘 | 洛谷 P1086 [NOIP2004 普及组] 花生采摘
[题目链接] ybt 1927:[04NOIP普及组]花生采摘 OpenJudge NOI 1.13 38:花生采摘 洛谷 P1086 [NOIP2004 普及组] 花生采摘 [题目考点] 1. 模拟 ...
- 花生采摘(洛谷-P1086)
题目描述 鲁宾逊先生有一只宠物猴,名叫多多.这天,他们两个正沿着乡间小路散步,突然发现路边的告示牌上贴着一张小小的纸条:"欢迎免费品尝我种的花生!――熊字". 鲁宾逊先生和多多都很 ...
- 花生采摘(洛谷P1086题题解,Java描述)
题目要求 P1086题目链接 分析 这个题是强行规定的贪心,就很简单啦.只需要排个序,逐一尝试即可. 每次都要试图跳到下一个格子,试一试过去消耗的距离加上从新位置到跳回路边的距离和会不会超出限制. 是 ...
- SDNU 1167.花生采摘(排序)
Description 鲁宾逊先生有一只宠物猴,名叫多多.这天,他们两个正沿着乡间小路散步,突然发现路边的告示牌上贴着一张小小的纸条:"欢迎免费品尝我种的花生!--熊字". 鲁宾逊 ...
- noip2004普及组第2题 花生采摘
题目描述 鲁宾逊先生有一只宠物猴,名叫多多.这天,他们两个正沿着乡间小路散步,突然发现路边的告示牌上贴着一张小小的纸条:"欢迎免费品尝我种的花生!――熊字". 鲁宾逊先生和多多都很 ...
- 花生采摘(peanuts)
终于有时间更新了,感觉接着上次的题解来一发吧! 题目:鲁宾逊先生有一只宠物猴,名叫多多.这天,他们两个正沿着乡间小路散步,突然发现路边的告示牌上贴着一张小小的纸条:"欢迎免费品尝我种的花生! ...
- 1072: 花生采摘
Description 鲁宾逊先生有一只宠物猴,名叫多多.这天,他们两个正沿着乡间小路散步,突然发现路边的告示牌上贴着一张小小的纸条:"欢迎免费品尝我种的花生!--熊字". 鲁宾逊 ...
最新文章
- Java报告比较日期,java 比较两个日期大小(1)
- J - Max Sum
- 更改微信小程序的基础版本库;更改uni-app小程序基础库;更改用户的微信小程序基础库最低版本;设置用户的微信小程序版本库;
- 鼠标紧跟lable_紧跟当前软件工程趋势的12种方法
- 使用友元,编译出错fatal error C1001: INTERNAL COMPILER ERROR (compiler file 'msc1.cpp', line 1786) 的解决...
- cachestat、cachetop、pcstat-linux系统缓存命中率分析工具
- linux mysql 保护_linux – 在Puppet中,我如何保护密码变量(在这种情况下是MySQL密码)?...
- 人力资源管理系统需求分析说明书
- win7系统和银行驱动安装
- 浅谈无线传感器和无线传感器网络
- halcon计算一条弯曲线的回归直线
- C语言中结构体所占内存空间
- 图像分割之基于阙值的分割方法
- 【转】《Cascaded Pyramid Network for Multi-Person Pose Estimation》--旷世2017COCO keypoints冠军论文解读
- 利用Redis原子计数器incr实现计数器及接口限流
- JetBrains的注册
- 信息爆炸时代的纳米技术-分子通信
- java坦克大战 实训报告_程序设计实训坦克大战实验报告
- Python如何实现将四位数字组合成一个不重复的三位数,for循环暴力解法
- 【转】五分钟理解什么是接口