花生采摘

news2024/11/17 3:07:34

[NOIP2004 普及组] 花生采摘

题目描述

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

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

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

  1.  从路边跳到最靠近路边(即第一行)的某棵花生植株;
    
  2.  从一棵植株跳到前后左右与之相邻的另一棵植株;
    
  3.  采摘一棵植株下的花生;
    
  4.  从最靠近路边(即第一行)的某棵花生植株跳回路边。
    

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

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

Tips:在采摘过程中不能回到路边哦。

输入格式

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

输出格式

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

样例 #1

样例输入 #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

样例输入 #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题

题目注意事项

问题一:读题时应该仔细读。有的同学没有看到每次只能拿剩下花生株中最大的,而是希望找到一种在规定时间内能够拿最多花生的组合,把题目变成了另外一道题。

问题二:有的同学没有读到“没有两株花生株的花生数目相同”的条件,因此把题目复杂化了。

问题三:这个题目是假设猴子在取花生的过程中不会回到大路上的,有些同学在思考是否可能在中间回到大路上,因为题目没说在大路上移动要花时间,所以有可能中途出来再进去摘的花生更多。

#include<bits/stdc++.h>//万能头文件。
using namespace std;
int m,n,i,j,k=1,t,u,ans;
struct peanuts{//用结构体存坐标和数量及时间。(x,y坐标,time时间,w数量)
    int x,y,time,w;
};  peanuts p[1000001];//结构体下标用来排序。
int a[1010][1010];//开个2维数组用来输入数据。
int main(){
    cin>>m>>n>>t;
    for(i=1;i<=m;i++)
       for(j=1;j<=n;j++){
          cin>>a[i][j];//输入完成。
             if(a[i][j]>0) {//当它下面有花生的时候就存它的数据。
             p[k].w=a[i][j];
             p[k].x=i;
             p[k].y=j;
             k++;
         }
      }
    for(i=1;i<k;i++)
       for(j=i+1;j<=k;j++)
          if(p[i].w<p[j].w)  swap(p[i],p[j]);//选择排序(用下标来排序,数量多的按题意先摘)。
     for(i=1;i<=k;i++){//枚举每个花生。
         u=p[i].x;//由于我们要考虑多多采花生返回,而返回的路程就是深度即x,如果加上这个x可以按时返回的话就采这个花生。
            if(i==1) p[i].time=p[i].x+1;  //第一个花生是不同的,因为多多一开始可以跳到第一个最多花生的所在列。
              else   p[i].time=p[i-1].time+abs(p[i].x-p[i-1].x)+abs(p[i].y-p[i-1].y)+1;//不是第一个的话就加上与前一个的坐标差再加采摘时间。
                 if (p[i].time+u<=t) ans+=p[i].w;//如果数据合法那么就把花生数加上。
     }
    cout<<ans;//输出最多花生数即可。
    return 0;
}

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

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

相关文章

linux 安装神州通用数据库 V7.0

linux 安装神州通用数据库 V7.0 操作系统、数据库1、官方下载链接2、windows客户端下载链接3、官方安装手册4、安装前准备3.1、创建安装用户3.2、以root 用户修改神通数据库安装包的所有者为shentong 用户3.3、以root 用户创建神通数据库主目录并修改所有者为shentong 用户3.4、…

学成在线笔记+踩坑(2)——【内容模块】课程基础查询,swagger+数据库字典+Httpclient+跨域

目录 1.【内容模块】需求分析 2.【内容模块】模块工程的结构 3.【课程查询功能1】通用 3.1 分析数据模型 3.2 mybatis-plus代码生成器 3.3 内容模块聚合api,model,service模块 3.4 接口设计分析 3.5 【基础模块】分页查询模型类 3.6【基础模块】日期配置类 3.7【内容…

Ae 入门系列之九:表达式

与使用关键帧相比&#xff0c;Ae 的表达式 Expression也用于控制属性值。 只不过使用表达式能简化操作&#xff0c;大大提高工作效率&#xff0c;使复杂动画的制作变得更加轻松。 ◆ ◆ ◆ 表达式语法基础 表达式基于标准的 JavaScript 语言。 如果熟悉脚本语言编程&#xff…

AutoGPT初次探索:免费体验、使用指南与心得总结

AutoGPT初次探索&#xff1a;免费体验、使用指南与心得总结 写在前面的废话一、部署 Auto-GPT二、试运行 Auto-GPT三、我踩过的坑四、后续探索 AutoGPT是一种基于GPT的自动化系统&#xff0c;为GPT提供了一个身体和内存&#xff0c;使其能够自主执行任务&#xff0c;例如市场分…

自己的完整c++ cuda包

pytorch关于c的所有文档集合 Welcome to PyTorch Tutorials — PyTorch Tutorials 2.0.0cu117 documentation 1.前置条件 使用编辑器clion&#xff0c;安装好cudatoolkit&#xff0c;cudnn&#xff0c;pytorch环境&#xff0c;编译工具gcc等等。 记得要设置好cudatoolkit的…

【C++】哈希的应用——布隆过滤器

哈希的应用——布隆过滤器 文章目录 哈希的应用——布隆过滤器一、布隆过滤器的概念与性质1.布隆过滤器的引出2.布隆过滤器的概念3.布隆过滤器的误判4.布隆过滤器的应用场景5.布隆过滤器优缺点6.如何选择哈希函数个数和布隆过滤器长度 二、布隆过滤器的实现1.布隆过滤器基本框架…

机器学习——SVM原理

问&#xff1a;支持向量机是基于经验风险最小化(ERM) 原则构建的&#xff0c;因此有更好的泛化性能。 答&#xff1a;错误。支持向量机是一种基于结构风险最小化原则构建的机器学习算法&#xff0c;它可以通过寻找合适的分割超平面来实现分类任务&#xff0c;并且具有较好的泛…

设计模式:软件设计原则

文章目录 1.开闭原则2.里氏代换原则3.依赖倒转原则4.接口隔离原则5.迪米特法则6.合成复用原则 在软件开发中&#xff0c;为了提高软件系统的可维护性和可复用性&#xff0c;增加软件的可扩展性和灵活性&#xff0c;程序员要尽量根据6条原则来开发程序&#xff0c;从而提高软件开…

QGIS绘制一张地图学习笔记01——配准栅格数据并解决配准导出的栅格文件不能显示的问题

1、进入配准工具主页面 首先&#xff0c;打开我们的绘制底图或者叫配准目标底图&#xff0c;我这里用的是高德的在线地图&#xff0c;具体qgis加载在线地图的方法见我前面的章节。加载的在线地图如下所示。 接着我们点击上方菜单栏的 栅格 菜单&#xff0c;点击菜单中的 配准工…

软件测试-测试用例案例及思维导图展示

目录 自动售货机的测试用例 一个杯子的测试用例 一支笔的测试用例 朋友圈点赞的测试用例 登录模块 购物车的测试用例 Windows对文件的复制粘帖功能的测试用例 自动售货机的测试用例 一个杯子的测试用例 一支笔的测试用例 朋友圈点赞的测试用例 功能测试 1点赞后是否显示…

docker安装rabbitMq集群

一 机器准备 准备三台虚拟机&#xff1a; 192.168.56.102 102.168.56.103 102.168.56.104 二 拉取镜像 在三台虚拟机上分别执行&#xff1a; docker pull rabbitmq:3.9.5-management 三 启动容器 103: docker run -d --hostname node2 --ad…

React--》React组件变化每次都会导致重新渲染,如何解决?

目录 React.memo useCallback useMemo React.memo React组件会在两种情况下下发生渲染 第一种&#xff1a;当组件自身的state发生变化时 第二种&#xff1a;当组件的父组件重新渲染时 第一种情况下重新渲染无可厚非&#xff0c;state都变化了组件自然应该重新进行渲染&…

7.1 基本运放电路(1)

集成运放的应用首先表现在它能构成各种运算电路上&#xff0c;并因此而得名。在运算电路中&#xff0c;以输入电压作为自变量&#xff0c;以输出电压作为函数&#xff1b;当输入电压变化时&#xff0c;输出电压将按一定的数学规律变化&#xff0c;即输出电压反映输入电压某种运…

【Web】WebHook详解

文章目录 webhook简介什么是 webhook?webhook 有什么用?webhook请求过程使用 webhookWebhook POST 或 GETWebhook 与轮询何时使用 webhookAsp .Net接受与处理接口处理 发送 WebHook和消息队列区别与联系来源 webhook简介 在当今高度连接的网络世界中,没有什么可以孤立地发挥…

Vue3二维码(QRCode)

可自定义设置以下属性&#xff1a; 扫描后的文本或地址&#xff08;value&#xff09;&#xff0c;类型&#xff1a;string&#xff0c;默认 二维码大小&#xff08;size&#xff09;&#xff0c;类型&#xff1a;number&#xff0c;单位px&#xff0c;默认 160 二维码颜色&…

nginx 部署vue项目,路由模式为history时,页面刷新404问题

目录 情况说明本案例解决方法配置解释为什么会出现404的情况root 和 alias 的区别try_files 配置的作用 友情提示 情况说明 nginx部署vue项目&#xff0c;文件放在html下的dist文件夹中 nginx.conf 文件中&#xff0c;server 里配置文件的位置、请求跨域等信息 本案例解决方…

Ubuntu Linux操作

引言 晚上上课发现桌子上遗留了这本书&#xff0c;水课就看了看学习下&#xff0c;以下内容直接总结知识点 磁盘内存解析 (1)硬盘有数个盘片,每个盘片两个面,每个面一个磁头。 (2)盘片被划分为多个扇形区域即扇区。 (3)同一盘片不同半径的同心圆为磁道。 (4)不同盘片相同半径…

制作真人手办有哪些不便?怎么解决?

相信很多朋友都喜欢拍摄写真&#xff0c;比如孩子生日的时候&#xff0c;结婚纪念的时候&#xff0c;写真照片能留存住很多美好的记忆。 不过随着科技的发展&#xff0c;大家已经不能满足只靠照片来记录生活了&#xff0c;越来越多的人开始盯上了手办这件物品。将真人的照片和…

4.5 创建透视表与交叉表

4.5 创建透视表与交叉表 4.5.1利用pivot_table函数可以实现透视表pivot_table函数的常用参数及其说明 4.5.2 使用crosstab函数创建交叉表crosstab函数的常用参数及其说明 4.5.3 任务实现数据完整代码 数据透视表&#xff08;Pivot Table&#xff09;是数据分析中一种常用的工具…

018 - C++ 类和结构体中的静态(static)

上一期我们讨论了 C 中的 static 关键字以及它在类或结构体之外的意义。本期我们讨论 static 在一个类或一个结构体中的具体情况。 先了解这些 在几乎所有面向对象的语言中&#xff0c;静态在一个类中意味着特定的东西。这意味着在类的所有实例中&#xff0c;这个变量只有一个…