【算法】多路归并(鱼塘钓鱼)

news2024/9/23 13:25:03

有 N 个鱼塘排成一排,每个鱼塘中有一定数量的鱼,例如:N=5 时,如下表:

鱼塘编号12345
第1分钟能钓到的鱼的数量(1..1000)101420169
每钓鱼1分钟钓鱼数的减少量(1..100)24653
当前鱼塘到下一个相邻鱼塘需要的时间(单位:分钟)3544

即:在第 11 个鱼塘中钓鱼第 11 分钟内可钓到 1010 条鱼,第 22 分钟内只能钓到 88 条鱼,……,第 55 分钟以后再也钓不到鱼了。

从第 11 个鱼塘到第 22 个鱼塘需要 33 分钟,从第 22 个鱼塘到第 33 个鱼塘需要 55 分钟,……

给出一个截止时间 T,设计一个钓鱼方案,从第 11 个鱼塘出发,希望能钓到最多的鱼。

假设能钓到鱼的数量仅和已钓鱼的次数有关,且每次钓鱼的时间都是整数分钟。

输入格式

共 55 行,分别表示:

第 11 行为 N;

第 22 行为第 11 分钟各个鱼塘能钓到的鱼的数量,每个数据之间用一空格隔开;

第 33 行为每过 11 分钟各个鱼塘钓鱼数的减少量,每个数据之间用一空格隔开;

第 44 行为当前鱼塘到下一个相邻鱼塘需要的时间;

第 55 行为截止时间 T。

输出格式

一个整数(不超过2e9-1),表示你的方案能钓到的最多的鱼。

数据范围

1≤N≤100
1≤T≤1000

输入样例:
5
10 14 20 16 9
2 4 6 5 3
3 5 4 4
14
输出样例:
76

分析:

 利用贪心思维,并不需要来回折返,如果钓完一分钟之后,这个鱼塘的鱼的数量依旧比其他鱼塘多,那就继续钓,这样可以节省来回的路上时间,使时间最大化

 

注意: 

(1)int spend[N]={0};

(2)memset(spend,0,sizeof(spend));

两个的区别:

第一行:

这行代码是在定义数组时使用的,不是赋值操作,切记切记!!!

而且也只是给第一个数组赋值为0

第二行:

这个函数是C中的,作用是将spend数组全部赋值为0

#include<iostream>
#include<cstring>
using namespace std;
#define N 110

int fishnum[N],d[N],dtime[N],spend[N];//鱼数,减少量,下个鱼塘时间,钓鱼所花时间

int get(int k){//求出鱼的数量
    return max(0,fishnum[k]-d[k]*spend[k]);
}

int work(int n,int T){
    int res=0;
    memset(spend,0,sizeof(spend));//将spend数组全部赋值为0
    for(int i=0;i<T;i++){
        int t=1;
        for(int j=2;j<=n;j++){//从第二个开始枚举鱼塘
            if(get(t)<get(j)){
                t=j;
            }
        }
        res+=get(t);//得到鱼的总数量
        spend[t]++;
    }
    return res;
}
int main(){
    int n,T;
    cin>>n;
    for(int i=1;i<=n;i++) cin>>fishnum[i];
    for(int i=1;i<=n;i++) cin>>d[i];
    for(int i=2;i<=n;i++){
        cin>>dtime[i];
        dtime[i]+=dtime[i-1];//前缀和
    }
    cin>>T;
    int res=0;
    for(int i=1;i<=n;i++){
        res=max(res,work(i,T-dtime[i]));
    }
    cout<<res<<endl;
    return 0;
    
}

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

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

相关文章

【Java 并发】AbstractQueuedSynchronizer 中的 Condition

1 简介 任何一个 Java 对象都天然继承于 Object 类, 在线程间实现通信的往往会应用到 Object 的几个方法, 比如 wait(), wait(long timeout), wait(long timeout, int nanos) 与 notify(), notifyAll() 几个方法实现等待 / 通知机制。同样的, 在 Java Lock 体系下也有同样的方…

代码随想录算法训练营第day27|93.复原IP地址 、 78.子集 、 90.子集II

93.复原IP地址 93. 复原 IP 地址 - 力扣&#xff08;LeetCode&#xff09; 有效 IP 地址 正好由四个整数&#xff08;每个整数位于 0 到 255 之间组成&#xff0c;且不能含有前导 0&#xff09;&#xff0c;整数之间用 . 分隔。 例如&#xff1a;"0.1.2.201" 和 …

AI论文速读 | UniTS:构建统一的时间序列模型

题目&#xff1a;UniTS: Building a Unified Time Series Model 作者&#xff1a;Shanghua Gao&#xff08;高尚华&#xff09;, Teddy Koker, Owen Queen, Thomas Hartvigsen, Theodoros Tsiligkaridis, Marinka Zitnik 机构&#xff1a;哈佛大学&#xff08;Harvard&#x…

学完排序算法,终于知道用什么方法给监考完收上来的试卷排序……

由于每个老师批改完卷子之后装袋不一定是有序的&#xff0c;鼠鼠我被拉去当给试卷排序的苦力。面对堆积成山的试卷袋&#xff0c;每一份试卷袋的试卷集又很重&#xff0c;鼠鼠我啊为了尽早下班&#xff0c;决定用一种良好的办法进行排序。 1.插入排序 首先考虑的是插入排序。…

Python 井字棋游戏

井字棋是一种在3 * 3格子上进行的连珠游戏&#xff0c;又称井字游戏。井字棋的游戏有两名玩家&#xff0c;其中一个玩家画圈&#xff0c;另一个玩家画叉&#xff0c;轮流在3 * 3格子上画上自己的符号&#xff0c;最先在横向、纵向、或斜线方向连成一条线的人为胜利方。如图1所示…

阿里云-零基础入门NLP【基于机器学习的文本分类】

文章目录 学习过程赛题理解学习目标赛题数据数据标签评测指标解题思路TF-IDF介绍TF-IDF 机器学习分类器TF-IDF LinearSVCTF-IDF LGBMClassifier 学习过程 20年当时自身功底是比较零基础(会写些基础的Python[三个科学计算包]数据分析)&#xff0c;一开始看这块其实挺懵的&am…

【C语言】数9的个数

编写程序数一下 1到 100 的所有整数中出现多少个数字9 1&#xff0c;首先产生1~100的数字。然猴设法得到数9个数&#xff0c;例如个位&#xff1a;19%109&#xff0c;十位&#xff1a;91/109。 2&#xff0c;每次得到数九的时候&#xff0c;就用一个变量来进行计数。 代码如…

Python--成员方法、@staticmethod将成员方法静态化、self参数释义

在 Python 中&#xff0c;成员方法是指定义在类中的函数&#xff0c;用于操作类的实例对象。成员方法通过第一个参数通常命名为 self&#xff0c;用来表示调用该方法的实例对象本身。通过成员方法&#xff0c;可以实现类的行为和功能。 成员方法的定义 在类中定义成员…

苍穹外卖-day10:Spring Task、订单状态定时处理、来单提醒(WebSocket的应用)、客户催单(WebSocket的应用)

苍穹外卖-day10 课程内容 Spring Task订单状态定时处理WebSocket来单提醒客户催单 功能实现&#xff1a;订单状态定时处理、来单提醒和客户催单 订单状态定时处理&#xff1a; 来单提醒&#xff1a; 客户催单&#xff1a; 1. Spring Task 1.1 介绍 Spring Task 是Spring框…

电脑装win11(作si版)

装win11经历 前言&#xff1a;因为我的u盘今天到了&#xff0c;迫不及待试试装机 然后在一系列准备好工具后&#xff0c;便是开始拿学校的机房电脑来试试手了~~ 前期准备 下载好win11镜像&#xff08;可以去微软官网下载&#xff09; 下载Rufus工具 https://www.lanzoue.com/…

2023年度VSCode主题推荐(个人常用主题存档)

前言 早在2018年的时候发了一篇关于VSCode主题风格推荐——VS Code 主题风格设置&#xff0c;时过境迁&#xff0c;如今常用的主题皮肤早已更替。 今天下午在整理VSCode插件的时候&#xff0c;不小心把常用的那款&#xff08;亮色&#xff09;主题插件给删除了&#xff0c;无…

配置OGG 如何批量修改源端及目标端序列值_满足客户变态需求学会这招你就赚了

欢迎您关注我的公众号【尚雷的驿站】 **************************************************************************** 公众号&#xff1a;尚雷的驿站 CSDN &#xff1a;https://blog.csdn.net/shlei5580 墨天轮&#xff1a;https://www.modb.pro/u/2436 PGFans&#xff1a;ht…

鸿蒙App开发学习 - TypeScript编程语言全面开发教程(下)

现在我们接着上次的内容来学习TypeScript编程语言全面开发教程&#xff08;下半部分&#xff09; 4. 泛型 TypeScript 中的泛型&#xff08;Generics&#xff09;是一种编程模式&#xff0c;用于在编写代码时增强灵活性和可重用性。泛型使得在定义函数、类、接口等数据类型时…

DeformableAttention的原理解读和源码实现

本专栏主要是深度学习/自动驾驶相关的源码实现,获取全套代码请参考 目录 原理第一步看看输入:第二步,准备工作:生成参考点的偏移量生成参考点的权重生成参考点 第三步,工作: 源码 原理 目前流行3D转2DBEV方案的都绕不开的transfomer变体-DeformableAttention. 传统transform…

DataFunSummit 2023因果推断在线峰会:解码数据与因果,引领智能决策新篇章(附大会核心PPT下载)

在数据驱动的时代&#xff0c;因果推断作为数据科学领域的重要分支&#xff0c;正日益受到业界的广泛关注。DataFunSummit 2023年因果推断在线峰会&#xff0c;汇聚了国内外顶尖的因果推断领域专家、学者及业界精英&#xff0c;共同探讨因果推断的最新进展、应用与挑战。本文将…

【小白笔记:JetsonNano学习(一)SDKManager系统烧录】

参考文章&#xff1a;SDKManager系统烧录 小白烧录文件系统可能遇到的问题 担心博主删除文章&#xff0c;可能就找不到比较详细的教程了&#xff0c;特意记录一下。 Jetson Nano采用四核64位ARM CPU和128核集成NVIDIA GPU&#xff0c;可提供472 GFLOPS的计算性能。它还包括4GB…

24计算机考研调剂 | 【官方】山东师范大学(22自命题)

山东师范大学2024年拟接收调剂 考研调剂信息 调剂专业目录如下&#xff1a; 计算机技术&#xff08;085404&#xff09;、软件工程&#xff08;085405&#xff09; 补充内容 我校2024年硕士研究生调剂工作将于4月8日教育部“中国研究生招生信息网”&#xff08;https://yz.ch…

海外问卷调查:代理IP使用方法

在进行问卷调查时&#xff0c;为了避免被限制访问或被封禁IP&#xff0c;使用代理IP已经成为了必要的选择。 其中&#xff0c;口子查和渠道查也不例外。 使用代理IP可以隐藏本机IP地址&#xff0c;模拟不同的IP地址&#xff0c;从而规避被封禁的风险。但是&#xff0c;对于很…

登录-前端部分

登录表单和注册表单在同一个页面中&#xff0c;通过注册按钮以及返回按钮来控制要显示哪个表单 一、数据绑定和校验 &#xff08;1&#xff09;绑定数据&#xff0c;复用注册表单的数据模型&#xff1a; //控制注册与登录表单的显示&#xff0c; 默认false显示登录 true时显…

linux 安装常用软件

文件传输工具 sudo yum install –y lrzsz vim编辑器 sudo yum install -y vimDNS 查询 sudo yum install bind-utils用法可以参考文章 《掌握 DNS 查询技巧&#xff0c;dig 命令基本用法》 net-tools包 yum install net-tools -y简单用法&#xff1a; # 查看端口占用情况…