鱼塘钓鱼(信息学奥赛一本通-T1373)

【题目描述】

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

即:在第1个鱼塘中钓鱼第1分钟内可钓到10条鱼,第2分钟内只能钓到8条鱼,……,第5分钟以后再也钓不到鱼了。从第1个鱼塘到第2个鱼塘需要3分钟,从第2个鱼塘到第3个鱼塘需要5分钟,……

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

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

【输入】

共5行,分别表示:

第1行为N;

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

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

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

第5行为截止时间T。

【输出】

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

【输入样例】

5
10 14 20 16 9
2 4 6 5 3
3 5 4 4
14

【输出样例】

76

【源程序】

#include <algorithm>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <iostream>
#include <queue>
#include <string>
#include <vector>
#define INF 0x3f3f3f3f
#define PI acos(-1.0)
#define N 101
#define MOD 123
#define E 1e-6
using namespace std;
#define fish first
#define lake second
priority_queue<pair<int, int> > heap; // pair表示先按照第一个元素降序排序,第一个元素相等时按照第二个元素降序排序
int t[N], f[N], d[N];
int main() 
{
    int n, T;
    cin >> n;
    for (int i = 1; i <= n; i++) //第1分钟各个鱼塘能钓到的鱼的数量
        cin >> f[i];
    for (int i = 1; i <= n; i++) //每过1分钟各个鱼塘钓鱼数的减少量
        cin >> d[i];
    for (int i = 1; i < n; i++) //当前鱼塘到下一个相邻鱼塘需要的时间
        cin >> t[i];
    cin >> T; //截止时间

    int maxx = -INF;
    int walk_time = 0;
    for (int k = 1; k <= n; k++) //枚举最远走到的池塘的编号
    {
        int rest_time = T - walk_time; //计算剩余时间
        int ans = 0;

        for (int i = 1; i <= k; i++) //收集能够钓鱼的池塘的资料
            heap.push(make_pair(f[i], i));
        while (rest_time > 0 && heap.top().fish > 0) 
        {
            pair<int, int> a = heap.top();
            heap.pop();
            ans += a.fish;       //贪心选取鱼最多的池塘
            a.fish -= d[a.lake]; //修改鱼的数量
            heap.push(a);        //堆维护
            rest_time--;         //剩余时间变少
        }
        if (ans > maxx) //刷新最优解
            maxx = ans;
        walk_time += t[k]; //累计走路需要的时间
    }
    cout << maxx << endl;
    return 0;
}

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
智慧鱼塘是一款专为鱼塘爱好者设计的手机应用程序。该应用旨在提供鱼塘管理的便利性和智能化功能,帮助用户更好地照顾和管理他们的鱼类。 首先,智慧鱼塘app设计图包含一系列鱼塘管理工具。用户可以通过应用添加他们的鱼塘信息,并对每条鱼进行个体档案管理。通过扫描鱼类标签,用户可以快速查看鱼类的品种、成长记录和健康状态等重要信息。此外,用户还可以记录并跟踪鱼类的食欲、体重和行为习惯,以及鱼塘水质和温度等环境参数。 其次,智能化功能是智慧鱼塘app设计中的重要组成部分。用户可以设置定时喂食功能,让应用在预定的时间自动给鱼类喂食,确保它们的正常生活习惯和营养摄入。此外,如果水质或温度超出理想范围,应用会发出警报提醒用户采取相应的措施,避免鱼类受到不良影响。同时,用户还可以通过智能推荐功能,获得关于鱼类饲养和鱼塘管理的专业建议。 最后,智慧鱼塘app设计图还提供了一个社交互动平台。用户可以创建个人资料,并与其他鱼塘爱好者分享自己的鱼塘经验、发现和问题。用户可以发布图片或视频,展示自己的鱼类和鱼塘,与其他用户进行交流和互动。这个平台也可以用于寻求专家或其他用户的建议和意见,共同解决鱼塘管理中的问题。 总之,智慧鱼塘app设计图旨在提供鱼塘管理的便利性和智能化功能。通过提供鱼类个体档案管理、智能化喂食和报警功能,以及社交互动平台,该应用帮助用户更好地照顾和管理他们的鱼塘,促进鱼塘爱好者之间的交流和分享。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值