uva 757 - Gone Fishing

简介: 点击打开链接uva 757 题目意思:            john现有h个小时的空闲时间,他打算去钓鱼。john钓鱼的地方共有n个湖,所有的湖沿着一条单向路顺序排列(john每在一个湖钓完鱼后,他只能走到下一个湖继续钓), john必须从1号湖开始钓起,但是他可以在任何一个湖结束他此次钓鱼的行程。

点击打开链接uva 757


题目意思:

           john现有h个小时的空闲时间,他打算去钓鱼。john钓鱼的地方共有n个湖,所有的湖沿着一条单向路顺序排列(john每在一个湖钓完鱼后,他只能走到下一个湖继续钓), john必须从1号湖开始钓起,但是他可以在任何一个湖结束他此次钓鱼的行程。

          john在每个湖中每5分钟钓的鱼数(此题中以5分钟作为单位时间),随时间的增长而线性递减。而每个湖中头5分钟可以钓到的鱼数以及每个湖中相邻5分钟钓鱼数的减少量,input中均会给出。并且John从任意一个湖走到它下一个湖的时间input中也都给出。求一种方案,使得john在有限的h小时中可以钓到尽可能多的鱼


解题思路:

1思路:贪心
2分析:
              1由于从湖1到最后一个湖的总时间是固定的,那么在扣除走路的时间后,我们可以认为这个人可以从一个湖“瞬间转移”到另外一个湖,即在任意时刻都能够从湖泊1到x中的任意一个掉一次鱼,我们以5分钟为一个单位。
              2那么我们就要去枚举这个人能够到达的湖从1-1,1-2,1-3......;然后对每一种情况求出当前能够调到的最多的鱼tmpAns和当前每一个湖所发的时间tmpTime,如果当前这种情况还有剩余时间没用完,那么直接加在tmpTime[0]上面。然后我们去判断当前tmpAns是否大于ans,如果是则更新ans并且更新ansTime;
              3输出有很多trick,第一如果ans为0,那么肯定把时间全部发在第一个湖,这个地方需要注意输出的情况。其它就是两个Case之间有空行,最后没有,然后“,”后有空格,最后一个没有。


代码:

#include <algorithm>  
#include <iostream> 
#include <cstring>
#include <cstdio> 
using namespace std;
#define MAXN 1010

int ans , n , h;
int f[MAXN] , d[MAXN] , t[MAXN];
int ansTime[MAXN];/*用来存储最后每个湖泊所发的时间*/

void solve() {
    int i , j , time , max , pos , tmpAns;
    int tmpTime[MAXN] , tmpF[MAXN];
    memset(ansTime , 0 , sizeof(ansTime));/*初始化为0*/
    for(i = 0 , ans = 0 ; i < n ; i++){
        time = 12*h - t[i];/*扣除走路的时间*/
        if(time <= 0) break;/*如果当前所剩time小于等于0都是不可能在到下一个湖的*/
        memcpy(tmpF , f , sizeof(f));/*数组复制*/
        tmpAns = 0 ; memset(tmpTime , 0 , sizeof(tmpTime));/*初始化*/
        while(1){
            if(!time) break;/*如果当前所剩time小于等于0都是不可能在到下一个湖的*/
            max = 0 ;
            for(j = 0 ; j <= i ; j++){
               if(max < tmpF[j]){
                   max = tmpF[j] ; pos = j;
               }   
            }
            if(!max) break;/*如果max为0,那么说明每一个湖鱼都为0,那么直接退出即可*/
            tmpAns += max ; tmpF[pos] -= d[pos];
            time-- ; tmpTime[pos]++;
        }
        if(time > 0) tmpTime[0] += time;/*如果还有剩时间则加在tmpTime[0]上面*/
        if(ans < tmpAns){/*判断ans是否小于tmpAns*/
            ans = tmpAns;
            memcpy(ansTime , tmpTime , sizeof(ansTime));
        }
    }
}

void output(){
    if(!ans) printf("%d" , h*60);/*如果ans为0,那么输出时候比较不同*/
    else printf("%d" , ansTime[0]*5);
    for(int i = 1 ; i < n ; i++)
        printf(", %d" , ansTime[i]*5);
    printf("\nNumber of fish expected: %d\n" , ans);
}

int main() {
    //freopen("input.txt", "r", stdin);
    int flag = 1;
    while(scanf("%d" , &n) && n){
        memset(t , 0 , sizeof(t));
        scanf("%d" , &h) ;
        for(int i = 0 ; i < n ; i++)
            scanf("%d" , &f[i]);
        for(int i = 0 ; i < n ; i++)
            scanf("%d" , &d[i]);
        for(int i = 1 ; i < n ; i++){
            scanf("%d" , &t[i]);
            t[i] += t[i-1];/*累加起来,方便计算*/
        }
        if(flag) flag = !flag;
        else printf("\n");
        solve() ; output();
    }
    return 0;
}




目录
相关文章
uva 11806 - Cheerleaders
点击打开链接 题意:在一个n行m列的矩形里面放k个相同的石子,要求第一行,最后一行,第一列,最后一列都要有石子。问有几种方法? 思路: 1 如果题目没有要求“第一行,最后一行,第一列,最后一列都要有石子”,那么答案就是C[n*m][k],我们用C[i][j]表示i个里面选择j个的组合数。
831 0
|
JavaScript 定位技术
uva 10047 - The Monocycle
点击打开链接uva 10047 思路:bfs 分析: 1 题目给定一个起始的状态然后要求是否可以到达目标状态 2 这些状态包括了位置,方向,底面颜色。
856 0
uva 1203 Argus
点击打开链接uva 1203 思路: 优先队列 分析: 1 题目要求前k个事件的编号,我们利用优先队列来维护即可 2 优先队列保存的是一个struct,因此我们需要重载 s.
1302 0
|
安全
UVA3644
题意:有一些简单化合物,每个化合物都由两种元素组成,每个元素用一个大写字母组成,你是一个装箱工人,从实验员那里按照顺序依次把一些简单化合物装到车上,但是这里存在一个安全隐患,如果车上存在k个简单化合物,正好包含k中元素,那么他们将组成一个易爆易燃的化合物,为了安全起见,每当你拿到一个化合物的时候,如果他和已装车的化合物形成易爆化合物,你就应当拒绝装车,否则就应该装车,编程输出有多少个没有装车的化合物。
520 0
uva375 Inscribed Circles and Isosceles Triangles
uva375 Inscribed Circles and Isosceles Triangles
57 0
|
BI
uva11729
题意:有n个人需要你分配任务,交代任务需要bi时间,执行任务需要ji时间,要求最早完成任务,请输出最后完成对的工作的时间。类型:贪心(先排序再处理)代码: #include #include #include #include using namespace std; int m...
719 0
UVA3295
题意:给出一个a*b的网格,在网格上取不共线的三点构成三角形,求三角形总数。分析:就是一一道简单的组合数计算题目,设总结点数为n,则取三个节点的个数为C(n,3),然后减去横向、竖向、斜向的三点共线的个数即可,斜线三点共线等价于所枚举的矩形的长宽成倍数关系,即gcd不为1 代码如下: #incl...
666 0
uva10112 Myacm Triangles
uva10112 Myacm Triangles
51 0
UVa11968 - In The Airport
UVa11968 - In The Airport
63 0

热门文章

最新文章