题目描述

在一条水平路边,有 n 个钓鱼湖,从左到右编号为1,2,...,n 。佳佳有 h 个小时的空余时间,他希望利用这个时间钓到更多的鱼。他从1  出发,向右走,有选择的在一些湖边停留一定的时间(是 5 分钟的倍数)钓鱼。最后在某一个湖边结束钓鱼。佳佳从第 i 个湖到第 i+1 个湖需要走 5*t_i 分钟路,还测出在第 i 个湖停留,第一个 5 分钟可以钓到 f_i 条鱼,以后每再钓 5 分钟,可以钓到的鱼量减少 d_i,若减少后的鱼量小于 0,则减少后的鱼量为 0 。为了简化问题,佳佳假定没有其他人钓鱼,也没有其他因素影响他钓到期望数量的鱼。请编程求出佳佳最多能钓鱼的数量。

输入格式

第一行一个整数n ,表示湖的个数

第二行一个整数 h,表示佳佳的空闲时间

第三行有 n 个整数,依次表示每个湖第一个 5 分钟能钓到鱼的数量

第四行有 n 个整数,依次表示以后的每5分钟钓鱼数量比前一个 5 分钟钓鱼数量减少的数量

第五行有 n-1 个整数,t_i 表示由第 i 个湖到第 i+1 个湖需要花 5*t_i 分钟的路程

输出格式

输出只有一行,表示佳佳最多能钓鱼的数量。

样例

样例输入

3
1
4 5 6
1 2 1
1 2

样例输出

35

数据范围与提示

对于 100% 的数据2<=n<=100,1<=h<=20。

____________________________________________________

一本通上有这个练习题,很经典。可以用贪心加上堆来做,也可以用动态规划来做。

这个题木主要练习了一下vector的调试输出。

比较新的gdb是可以直接用print来进行输出的

p myvector

如果是比较老的gdb当然也可以用其他方法输出,但是我觉得还是编写一个函数,在用print或者call来调用比较好。

代码如下:

void p(vector<node>&q)
{
for(int i=0;i<q.size();++i)cout<<'{'<<q[i].v<<' '<<q[i].d<<"},";
cout<<endl;
}

  调用的格式为

p p(myvector)

或者

call p(myvector)

____________________________________________________

 1 #include <bits/stdc++.h>
2 using namespace std;
3 const int maxn = 105;
4 int n, h;
5 struct node {
6 int v, d;
7 bool operator<(const node &x) const { return v < x.v; }
8 };
9 vector<node>q;
10 node sz[maxn];
11 int dis[maxn];
12 int ans;
13 //void p(vector<node>&q);
14
15 int main() {
16 scanf("%d%d", &n, &h);
17 h *= 12;
18 for (int i = 1; i <= n; ++i) scanf("%d", &sz[i].v);
19 for (int i = 1; i <= n; ++i) scanf("%d", &sz[i].d);
20 for(int x,i=2;i<= n;++i)
21 {
22 scanf("%d",&x);
23 dis[i]=dis[i-1]+x;
24 }
25 for(int i=1;i<=n;++i)//枚举最远的鱼塘
26 {
27 int hh=h-dis[i];//剩余的时间
28 int tans=0;
29 while(!q.empty())q.pop_back();
30 for(int j=1;j<=i;++j)
31 {
32 q.push_back(sz[j]);
33 push_heap(q.begin(),q.end());
34 }
35 for(int j=1;j<=hh;++j)
36 {
37 node tp=q[0];
38 pop_heap(q.begin(),q.end());
39 q.pop_back();
40 if(tp.v>0)
41 {
42 tans+=tp.v;
43 tp.v-=tp.d;
44 q.push_back(tp);
45 push_heap(q.begin(),q.end());
46 }
47 else break;
48 }
49 ans=max(ans,tans);
50 }
51 cout<<ans;
52
53 return 0;
54 }
55 /*
56 void p(vector<node>&q)
57 {
58 for(int i=0;i<q.size();++i)cout<<'{'<<q[i].v<<' '<<q[i].d<<"},";
59 cout<<endl;
60 }
61 */

loj10009钓鱼___vector的调试的更多相关文章

  1. loj10009 P1717 钓鱼

    P1717 钓鱼 贪心+优先队列 先枚举最后走到哪个湖,然后用优先队列跑一遍贪心即可 #include<iostream> #include<cstdio> #include& ...

  2. vue—你必须知道的 js数据类型 前端学习 CSS 居中 事件委托和this 让js调试更简单—console AMD && CMD 模式识别课程笔记(一) web攻击 web安全之XSS JSONP && CORS css 定位 react小结

    vue—你必须知道的   目录 更多总结 猛戳这里 属性与方法 语法 计算属性 特殊属性 vue 样式绑定 vue事件处理器 表单控件绑定 父子组件通信 过渡效果 vue经验总结 javascript ...

  3. 钓鱼小技巧-XLM

    前言 XLM钓鱼不是一项新的技术,自从公开以后,网上有很多对其的分析文章,这里仅仅做一个分享和摸索记录.文章中有问题的地方还请指出. 一个简单的例子 新建一个excel表格,右键选择表,选择插入 插入 ...

  4. C# Web应用调试开启外部访问

    在用C#开发Web应用时有个痛点,就是本机用VS开启Web应用调试时外部机器无法访问此Web应用.这里将会介绍如何通过设置允许局域网和外网机器访问本机的Web应用. 目录 1. 设置内网访问 2. 设 ...

  5. NodeJs之调试

    关于调试 当我们只专注于前端的时候,我们习惯性F12,这会给我们带来安全与舒心的感觉. 但是当我们使用NodeJs来开发后台的时候,我想噩梦来了. 但是也别泰国担心,NodeJs的调试是很不方便!这是 ...

  6. 微信公众号开发之VS远程调试

    目录 (一)微信公众号开发之VS远程调试 (二)微信公众号开发之基础梳理 (三)微信公众号开发之自动消息回复和自定义菜单 前言 微信公众平台消息接口的工作原理大概可以这样理解:从用户端到公众号端一个流 ...

  7. 【社工】NodeJS 应用仓库钓鱼

    前言 城堡总是从内部攻破的.再强大的系统,也得通过人来控制.如果将入侵直接从人这个环节发起,那么再坚固的防线,也都成为摆设. 下面分享一个例子,利用应用仓库,渗透到开发人员的系统中. 应用仓库 应用仓 ...

  8. 写出易调试的SQL(修订版)

    h4 { background: #698B22 !important; color: #FFFFFF; font-family: "微软雅黑", "宋体", ...

  9. tomcat开发远程调试端口以及利用eclipse进行远程调试

    一.tomcat开发远程调试端口 方法1 WIN系统 在catalina.bat里:  SET CATALINA_OPTS=-server -Xdebug -Xnoagent -Djava.compi ...

随机推荐

  1. Java发送企业微信应用消息

    1.发送消息与被动回复消息 (1)流程不同:发送消息是第三方服务器主动通知微信服务器向用户发消息.而被动回复消息是 用户发送消息之后,微信服务器将消息传递给 第三方服务器,第三方服务器接收到消息后,再 ...

  2. 讲两个int 数组找出重复的数字 用最少的循环

    int a[] = {1,3}; int b[] = {1,3,5}; int size = a.length>b.length ?a.length:b.length; int valueA = ...

  3. [leetcode]168. Excel Sheet Column Title表格列名编码(十进制和多进制相互转换)

    其实就是一道,十进制转多进制的题 十进制转多进制就是从后边一位一位地取数. 这种题的做法是,每次用n%进制,相当于留下了最后一位,然后把这位添加到结果最前边.结果需要转为进制的符号. 下一次循环的n变 ...

  4. Qt学习笔记-Qt5和Qt4在音频方面的不同-QtAV

    之前学习qt4的时候,播放音频用的是phonon播放后端插件+mplayer. 今天改用qt5了.qt5中去掉了phonon模块加了multimedia.但是依然无法播放音乐,因为没有ffmpge s ...

  5. 用漫画的形式展现——什么是web

    Web主要经历了web1.0和web2.0的阶段.万维网的初期都是web1.0的时代:静态页面. 在不同的时代,流行的web安全问题也不太相同.在web1.0时代,web安全主要是 Web1.0:sq ...

  6. rm(操作系统的删除文件)与git rm的区别

    git rm:1.删除了一个文件2.把这个删除的文件纳入暂存区如果想要恢复这个文件,则需要做2个操作a.git reset HEAD file_name --将文件从暂存区恢复到工作区b.git ch ...

  7. eclipse下如何查看Android源码

    1.查看安卓源代码: (1)首先要先下载安装源代码,网上有很多地方都可以下,百度"安卓源代码下载就行了",这里要注意版本,比如我这里用的是4.0.3的版本,对应的是android- ...

  8. c#中io常用操作笔记

    创建文件1 private void button1_Click(object sender, EventArgs e) { if (textBox1.Text == string.Empty) { ...

  9. JVM内存模型总结,有各版本JDK对比、有元空间OOM监控案例、有Java版虚拟机,综合实践学习!

    作者:小傅哥 博客:https://bugstack.cn Github:https://github.com/fuzhengwei/CodeGuide/wiki 沉淀.分享.成长,让自己和他人都能有 ...

  10. SpringCloud --服务调用Feign

    介绍 服务间通信简介 一个系统可以由不同的微服务构成,比如一个电商系统可以由订单服务.商品服务.用户服务等共同组成. 这些服务相互独立,但又相互依赖.由于它们相互依赖,所以需要通过通信的方式来进行相互 ...