noip2004普及组第2题 花生采摘

题目描述
鲁宾逊先生有一只宠物猴,名叫多多。这天,他们两个正沿着乡间小路散步,突然发现路边的告示牌上贴着一张小小的纸条:“欢迎免费品尝我种的花生!――熊字”。

鲁宾逊先生和多多都很开心,因为花生正是他们的最爱。在告示牌背后,路边真的有一块花生田,花生植株整齐地排列成矩形网格(如图11)。有经验的多多一眼就能看出,每棵花生植株下的花生有多少。为了训练多多的算术,鲁宾逊先生说:“你先找出花生最多的植株,去采摘它的花生;然后再找出剩下的植株里花生最多的,去采摘它的花生;依此类推,不过你一定要在我限定的时间内回到路边。”

我们假定多多在每个单位时间内,可以做下列四件事情中的一件:

1) 从路边跳到最靠近路边(即第一行)的某棵花生植株;

2) 从一棵植株跳到前后左右与之相邻的另一棵植株;

3) 采摘一棵植株下的花生;

4) 从最靠近路边(即第一行)的某棵花生植株跳回路边。

现在给定一块花生田的大小和花生的分布,请问在限定时间内,多多最多可以采到多少个花生?注意可能只有部分植株下面长有花生,假设这些植株下的花生个数各不相同。

例如在图2所示的花生田里,只有位于(2, 5), (3, 7), (4, 2), (5, 4)(2,5),(3,7),(4,2),(5,4)的植株下长有花生,个数分别为13, 7, 15, 913,7,15,9。沿着图示的路线,多多在2121个单位时间内,最多可以采到3737个花生。

输入输出格式
输入格式:
第一行包括三个整数,M, N和K,用空格隔开;表示花生田的大小为M \times N(1 \le M, N \le 20)M×N(1≤M,N≤20),多多采花生的限定时间为K(0 \le K \le 1000)K(0≤K≤1000)个单位时间。接下来的MM行,每行包括N个非负整数,也用空格隔开;第i + 1行的第j个整数P_{ij}(0 \le P_{ij} \le 500)P
ij
​ (0≤P
ij
​ ≤500)表示花生田里植株(i, j)(i,j)下花生的数目,00表示该植株下没有花生。

输出格式:
一个整数,即在限定时间内,多多最多可以采到花生的个数。

输入输出样例
输入样例#1:
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
输出样例#1:
37
输入样例#2:
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
输出样例#2:
28
说明
noip2004普及组第2题

题目本身并不是很难。主要是要看到题目规定的并不是要采的最多,必须从大到小,依次采摘,因此我们只贪心就可以,用结构体存下横纵坐标和数量,然后排序,按照排序后的顺序依次采摘,期间计算耗费的时间,每计算一个就要进行判断当前所剩余的时间是否可以回去,当不能回去时则到达上一个点时的采摘量,就是最多的采摘量。(注意计算时的横纵坐标,是根据x算还是y,这个根据自己存储的不同使用的也不同,我在这里傻乎乎的找了好长时间orz)

代码

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
using namespace std;
int pic[50][50];
int ans,n,m,k,cnt,nowx,nowy,tot;
struct edge{int x,y,v;
}e[5000];
bool cmp(edge a,edge b){return a.v > b.v;
}
int main(){scanf("%d%d%d",&n,&m,&k);for(int i = 1; i<=n; i++){for(int j = 1; j<=m; j++){scanf("%d",&pic[i][j]);if(pic[i][j]){cnt ++;e[cnt].x = i;e[cnt].y =j;e[cnt].v = pic[i][j];}}} sort(e+1,e+1+cnt,cmp);  if(2*e[1].y + 1 > k){cout << 0;return 0;}else if(2*e[1].x + 1 == k){cout << e[1].v;return 0;}nowy = e[1].y;for(int i = 1; i<=cnt; i++){tot += abs(nowy - e[i].y) + abs(nowx - e[i].x) + 1; if(tot + e[i].x > k)break;nowx = e[i].x;nowy = e[i].y;ans += e[i].v; }cout << ans ;return 0;
}

转载于:https://www.cnblogs.com/Euplectella/p/10092821.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/570071.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

命令补全

yum install -y bash-completion转载于:https://www.cnblogs.com/tony3154/p/10095259.html

Centos查看用户登陆记录

首先简单介绍一下Centos中记录登陆信息的日志文件。 有关当前登录用户的信息记录在文件utmp中&#xff1b;登录进入和退出纪录在文件wtmp中&#xff1b;最后一次登录文件可以用lastlog命令察看。 数据交换、关机和重起也记录在wtmp文件中。所有的纪录都包含时间戳。 每次有一个…

针对科技文章的多标签分类

0. 起 最近没有更新。暑假之后学的东西也比较杂&#xff0c;看了一下基于DL的智能美颜&#xff0c;感觉入了个大坑。前前后后看了传统的轮廓提取算法和FCN等等&#xff0c;调代码巴拉巴拉几个星期就这么过了。前几天看ACM的best paper也觉得很有意思&#xff0c;两个步骤&#…

Centos服务器查看当前的并发数

作为运维人员我们经常需要看下Centos服务器的当前并发数&#xff0c;来了解下服务器当前是否达到并发瓶颈。 那么如何查看呢&#xff1f;使用下面的命令可以分组查看各种连接状态。 netstat -n | awk /^tcp/ {S[$NF]} END {for(a in S) print a, S[a]}返回结果&#xff1a; SYN…

Rest_Framework之频率组件部分

一、RestFramework之频率组件源码部分 频率组件的源码部分和权限组件流程一模一样的&#xff0c;这里就不多说了&#xff0c;直接上源码的主要逻辑部分&#xff1a; def check_throttles(self, request):"""Check if request should be throttled.Raises an app…

CentOS服务器下对mysql的优化

一、mysql的优化思路 mysql的优化分为两方面&#xff1a; 1. 服务器使用前的优化 2. 服务使用中的优化 二、mysql的基础优化步骤 1. 硬件级优化 &#xff08;1&#xff09;. 最好mysql自己使用一台物理服务器 &#xff08;2&#xff09;. 内存和CPU方面&#xff0c;根据需求给予…

【使用指南】WijmoJS 前端开发工具包

为方便广大前端开发人员更好的使用 WijmoJS 前端开发工具包&#xff0c;葡萄城专门推出了 WijmoJS 使用指南&#xff0c;该指南详细地介绍了如何把 WijmoJS 各种强大的功能应用到您自己的 Web 项目中&#xff0c;助您轻松掌握产品使用技巧&#xff0c;快速完成产品选型。 本指南…

phpMyAdmin4.4.10安装

1.下载地址&#xff1a; phpMyAdmin4.4.10 https://files.phpmyadmin.net/phpMyAdmin/4.4.10/phpMyAdmin-4.4.10-all-languages.zip Apache 2.4.12&#xff08;VC9&#xff09; http://www.apachehaus.com/cgi-bin/download.plx php-5.4.42&#xff08;VC9&#xff09…

汇编实验九

20171308171 胡欣怡 一、实验目的1. 掌握十进制两位数输出的方法2. 理解 8025 彩色字符模式显示原理3. 综合应用寻址方式和汇编指令完成应用编程二、实验准备1. 复习数值和数字字符之间的转换方法&#xff0c;div 指令用法2. 学习 P187-189 支撑材料及「实验 9 提示」&#xff…

Tensorflow取消占用全部GPU

参考&#xff1a;https://www.cnblogs.com/jiu0821/p/9501665.html Tensorflow默认是会占用全部的GPU&#xff0c;而有时候你根本不需要那么占用那么多GPU资源&#xff0c;这时候就可以采用如下三种方法进行解决&#xff1a; 1、在构造tf.Session()时候通过传递tf.GPUOptions作…

mysql5.7.12安装问题

mysql5.7.6之后不再有data数据目录&#xff0c;需手动初始化数据目录。 在Windows上,使用这些命令之一: C:\> bin\mysqld --initialize C:\> bin\mysqld --initialize-insecure 使用 --initialize为 “缺省安全”安装(会生成一个随机的初始 root密码)。不过密码会被标记为…

P5068 [Ynoi2015]我回来了

传送门 解锁成就&#xff1a;ynoi的题目都做到过原题 因为\(n\)很小&#xff0c;我们可以用\(sss[u][i]\)表示到点\(u\)的距离不超过\(i\)的点的集合&#xff0c;这个可以用bitset存&#xff0c;然后先一遍bfs&#xff0c;再做一个前缀和就可以处理好了 询问的话&#xff0c;把…

U盘安装centos 7 提示 “Warning: /dev/root does not exist, could not boot” 解决办法

安装centos 7时提示 “Warning: /dev/root does not exist, could not boot” 这个问题是没有找到你的U盘&#xff0c;这个配置是需要在上一步需要完成的&#xff0c;但在上一步我们并不知道U盘的文件名&#xff0c;所以索性在这一步查看一下U盘的设备名&#xff0c;然后再回到…

bzoj 3585 mex

Written with StackEdit. 题目描述 有一个长度为\(n\)的数组\({a_1,a_2,...,a_n}\)。\(m\)次询问&#xff0c;每次询问一个区间内最小没有出现过的自然数。 Input 第一行\(n,m\)。 第二行为\(n\)个数。 从第三行开始&#xff0c;每行一个询问\(l,r\)。 Output 一行一个数&#…

ffmpeg转mp4格式

FFMPEG -i uploadfile/video/test.wmv -c:v libx264 -strict -2 uploadfile/mp4/test.mp4FFMPEG -i uploadfile/video/test.wmv -c:v libx264 -strict -2 -s 1280x720 -b 1000k uploadfile/mp4/test.mp4

(笔记)网络技术学习交流会

1、网络工程师发展历程 &#xff08;1&#xff09;网络管理员阶段 ①计算机硬件的维护 ②计算机系统的维护 ③局域网的维护 ④打印服务的维护 ⑤业务数据的管理&#xff08;更新、备份&#xff09; ⑥网站的维护&#xff08;在网站上进行更新&#xff09; ⑦在网络上对公司进行…

CentOS 6服务器简单安全配置

1. 禁用不使用的用户 注意&#xff1a;不建议直接删除&#xff0c;当你需要某个用户时&#xff0c;自己重新添加会很麻烦。也可以usermod -L或passwd -l user锁定。 cp /etc/passwd{,.bak}修改之前先备份 vi /etc/passwd编辑用户&#xff0c;在前面加上#注释掉此行 注释的用…

【原创】大叔经验分享(6)Oozie如何查看提交到Yarn上的任务日志

通过oozie job id可以查看流程详细信息&#xff0c;命令如下&#xff1a; oozie job -info 0012077-180830142722522-oozie-hado-W 流程详细信息如下&#xff1a; Job ID : 0012077-180830142722522-oozie-hado-W -----------------------------------------------------------…

Beta 冲刺(3/7)

Beta 冲刺&#xff08;3/7&#xff09; Beta 冲刺 &#xff08;3/7&#xff09; 队名&#xff1a;第三视角 组长博客链接 本次作业链接 团队部分 团队燃尽图 工作情况汇报 张扬&#xff08;组长&#xff09; 过去两天完成了哪些任务 文字/口头描述 参与开发关键词提醒部分展示G…

vuex的理解

首先需要了解vuex的基本概念和使用方式&#xff0c;vue的官网也有很详细的说明或者浏览&#xff1a;https://zhuanlan.zhihu.com/p/24357762。vue是单页应用所以当页面刷新时vuex的数据随之也被清空了&#xff0c;如何实现页面被刷新而数据没有被清空呢&#xff1f;vuex主要是v…