首页 > 其他分享 >STL 堆 鱼塘钓鱼

STL 堆 鱼塘钓鱼

时间:2023-02-07 13:03:58浏览次数:50  
标签:钓鱼 STL 钓到 鱼塘 分钟 int heap


鱼塘钓鱼(fishing)


时间限制: 1000 ms         内存限制: 65536 KB

提交数: 150     通过数: 82 

​​纯贪心做法​​

STL+堆

dp

【题目描述】

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

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

即:在第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。

【输出】

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

【输入样例】

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

【输出样例】

76

【来源】


​No​

代码实现:

#include<bits/stdc++.h>
using namespace std;
#define fish first
#define lake second
priority_queue<pair<int,int> >heap;//pair表示先按照第一个元素降序,第一个元素相等时,按照第二个元素降序
int main()
{
int n,f[101],d[101],t[101],tot;
cin>>n;
for(int i=1;i<=n;i++)scanf("%d",&f[i]);
for(int i=1;i<=n;i++)scanf("%d",&d[i]);
for(int i=1;i<n;i++)scanf("%d",&t[i]);
cin>>tot;
int t1=0,maxx=0;
for(int k=1;k<=n;k++)//枚举每个池塘为最后的钓鱼池塘
{
int time=tot-t1;
int ans=0;
for(int i=1;i<=k;i++)
heap.push(make_pair(f[i],i));
while(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);//堆维护
time--;
}
maxx=max(maxx,ans);
t1+=t[k];
}
cout<<maxx<<endl;
return 0;
}





标签:钓鱼,STL,钓到,鱼塘,分钟,int,heap
From: https://blog.51cto.com/u_14932227/6041996

相关文章

  • 记一次免杀马的钓鱼实践
    记一次免杀马的钓鱼实践学了一寒假免杀,终于算达到了年前定的目标:玩一玩兄弟的电脑   这次使用shellcode转UUID,回调函数加载,加壳的方式对cs的64位shellcode做了处理......
  • C++面试八股文快问快答のSTL篇
    文章目录​​STL篇​​​​vector的底层原理(此题本人踩坑,需重视)​​​​vector中的reserve和resize的区别​​​​vector中的size和capacity的区别​​​​vector中erase方......
  • JSTL常用标签choose和foreach常用标签
    JSTL的常用标签choosechoose相当于java代码中的switch语句完成数字编号对应星期几案例1、域中存储数字2、使用choose标签取出数字 相当于switch声明......
  • JSTL概述和JSTL常用标签if
    JSTL概述1.概念:JavaServlet Pages Tag Library(JSP标准标签库)是由Apache组织提供的开源的免费的jsp标签<标签>2.作用:用于简化和替换jsp页面......
  • C++ STL stack
    #include<stack>头文件usingnamespacestd;作用这个很清楚了,FILO运用在:括号匹配、波兰式计算问题上(未完待续)创建一个参数,默认使用deque容器stack<typenameT,t......
  • 【转】c++中Vector等STL容器的自定义排序
    三种方式实现vector的自定义排序方法1:重载运算符#include<vector>#include<algorithm>#include<functional>usingnamespacestd;structTItem{intm_i......
  • C++ STL unordered_map
    #include<unordered_map>头文件usingnamespacestd;作用无序map容器。以pair形式存储数据。pair在#include<utility>头文件中定义。pair:<key,value>pair其实就是数据......
  • 【速记】C++ STL自定义排序
    这篇笔记咱日后应该还会进行补充。关于sort的比较函数STL的algorithm库中的sort函数,可以接受一个cmp函数作为第三个参数,用来指定排序的规则。自定义sort比较函数cmp(a,......
  • 侯捷 STL标准库和泛型编程 视频全集下载
    关注公众号:红宸笑。回复:视频即可 ......
  • DNS欺骗:网站克隆实现网站钓鱼攻击
    1DNS1.1DNS是什么?域名系统(DomainNameSystem)是互联网使用的命名系统,用来将主机域名转换为ip地址,属于应用层协议,使用UDP传输。1.2为什么需要DNS?DNS协议提供域......