zoukankan      html  css  js  c++  java
  • loj10009钓鱼___vector的调试

    题目描述

    在一条水平路边,有 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 */
    View Code
  • 相关阅读:
    TreeView的自定义绘制图标处理
    业务逻辑层的封装设计
    记一次CS系统与BS的对接集成
    cmd命令使用备忘
    如何有效管理员工
    代码可维护性重要吗?
    Oracle GoldenGate Director安装备忘
    浅析C#深拷贝与浅拷贝
    一首同音叠字诗“石室诗士施氏”
    Ajax原生使用
  • 原文地址:https://www.cnblogs.com/gryzy/p/13966405.html
Copyright © 2011-2022 走看看