题目1022:游船出租(hash简单应用)

问题来源

  http://ac.jobdu.com/problem.php?pid=1022

问题描述

  每次输入:船号(1~100) 键值(S或E) 发生时间(小时:分钟)。当船号为0时,代表一天结束;当船号为-1时,结束输入。

问题分析

  这道题一开始可能会想直接用一个结构体存下所有记录,在进行处理,这样一定是会超时的,为什么呢?由于我们在判断是不是多余数据时,需要遍历整个数组,浪费了大量时间,这种做法坑定是不行的。

  本题我们发现船号只在1-100,很小的范围,那么我们使用hash数组,把船号当做数组的下标,当输入为‘E’时,我们只要判断他开始是不是‘S’就知道他是不是没用的数据了。这样一轮下来就可以得到答案。

  注:注意输出平均时间计算。

参考代码

//
// Created by AlvinZH on 2017/5/17.
// Copyright (c) AlvinZH. All rights reserved.
//

#include <iostream>
#include <cstring>
#include <cstdio>
#include <cmath>

using namespace std;

typedef struct{
    char SorE;
    int h;
    int m;
}Record;

Record R[105];

int main()
{
    int id;
    char c;
    char time[6];
    int sumF=0;
    int sumT=0;
    while(1){
        scanf("%d",&id);
        if(id==-1) break;
        else if(id==0){
            if(sumF>0)
                printf("%d %d\n",sumF,(int)ceil((float)sumT/sumF));
            else printf("0 0\n");

            for(int i=1;i<=100;i++)
                R[i].SorE=‘0‘;
            sumF=0;
            sumT=0;
        }
        else{
            scanf("%c %s",&c,&time);
            if(c==‘S‘){
                R[id].SorE=‘S‘;
                R[id].h=(time[0]-‘0‘)*10+(time[1]-‘0‘);
                R[id].m=(time[3]-‘0‘)*10+(time[4]-‘0‘);
            }
            else if(c==‘E‘){
                if(R[id].SorE==‘S‘){
                    int hh=(time[0]-‘0‘)*10+(time[1]-‘0‘);
                    int mm=(time[3]-‘0‘)*10+(time[4]-‘0‘);
                    sumF++;
                    sumT+=(hh-R[id].h)*60+(mm-R[id].m);
                }
            }
        }
    }
}

作者: AlvinZH

出处: http://www.cnblogs.com/AlvinZH/

本人Github:https://github.com/Pacsiy/JobDu

本文版权归作者AlvinZH和博客园所有,欢迎转载和商用,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

时间: 2024-10-27 18:02:14

题目1022:游船出租(hash简单应用)的相关文章

题目1022:游船出租(结构体使用)

题目链接:http://ac.jobdu.com/problem.php?pid=1022 详解链接:https://github.com/zpfbuaa/JobduInCPlusPlus 参考代码: // // 1022 游船出租.cpp // Jobdu // // Created by PengFei_Zheng on 29/04/2017. // Copyright © 2017 PengFei_Zheng. All rights reserved. // #include <stdio

题目1021:统计字符(hash简单应用)

问题来源 http://ac.jobdu.com/problem.php?pid=1021 问题描述 每次输入两个字符串,统计第一个字符串中的每个字符在第二个字符串中出现的次数. 问题分析 太明显了,hash数组的简单应用:吧字符数值作为数组下标对每个字符进行计数. 另外,字符串的整行输入,请参考:http://www.cnblogs.com/AlvinZH/p/6798023.html 参考代码 // // Created by AlvinZH on 2017/5/18. // Copyrig

九度1022 -栈 - 游船出租

这题目我想到的是栈,当然感觉也是想多了,, #include<stdio.h> #include<stack> #include<math.h> using namespace std; double round(double r) { return (r > 0.0) ? floor(r + 0.5) : ceil(r - 0.5); } stack<int>data[100]; int sum; int num; int pre; void ini

2014牡丹江网络预选赛I题(字符串hash+简单DP)zoj3817

Chinese Knot Time Limit: 2 Seconds      Memory Limit: 65536 KB      Special Judge Chinese knot is a decorative handicraft that began as a form of Chinese folk artifact in the Tang and Song Dynasty in China. It was later popularized in the Ming. Alice

中大周赛第7场 HASH 简单题

Description Spies use attributes to disguise themselves to make sure that they are not recognized. For example, when putting on sunglasses, a spy suddenly looks completely different and cannot be recognized anymore. Every combination of attributes gi

hdu 1861 游船出租(模拟题,,水)

题意: 现有公园游船租赁处请你编写一个租船管理系统. 当游客租船时,管理员输入船号并按下S键,系统开始计时:当游客还船时,管理员输入船号并按下E键,系统结束计时. 船号为不超过100的正整数.当管理员将0作为船号输入时,表示一天租船工作结束,系统应输出当天的游客租船次数和平均租船时间. 注意:由于线路偶尔会有故障,可能出现不完整的纪录,即只有租船没有还船,或者只有还船没有租船的纪录,系统应能自动忽略这种无效纪录. 输入: 测试输入包含若干测试用例,每个测试用例为一整天的租船纪录,格式为船号(1~

一致性Hash简单介绍和使用

背景: 一致性Hash用于分布式缓存系统,将Key值映射到详细机器Ip上,而且添加和删除1台机器的数据移动量较小,对现网影响较小 实现: 1 Hash环:将节点的Hash值映射到一个Hash环中.每一个Key顺时针第一个找到的节点.就是这个Key被路由到的机器 2 "虚拟节点":将节点虚拟成多个"虚拟节点"分布在Hash环上,使得分布更均匀.扩缩容影响较小 代码实例: /* * @ 一致性Hash模拟測试 * @ 结论:模拟4台机器扩容1台.遍历Key[0,9999

字符串hash - 简单的字符匹配 --- poj 3461

Oulipo Problem's Link:http://poj.org/problem?id=3461 Mean: 给你一个模式串P和一个母串S,让你统计P串在S串中出现的次数. analyse: 这题我一开始想到的就是使用KMP,就用KMP写了,93ms,挺快的.我又用AC自动机写了一遍(纯属娱乐),万万没想到竟然超时了,是我姿势不对么? 后来看别人有用字符串hash写的,听说字符串hash在某些问题中比AC自动机什么的厉害多了,于是又用字符串hash写了一遍,确实挺不错的,代码30+行,而

ACM训练方案-POJ题目分类

ACM训练方案-POJ题目分类 博客分类: 算法 ACM online Judge 中国: 浙江大学(ZJU):http://acm.zju.edu.cn/ 北京大学(PKU):http://acm.pku.edu.cn/JudgeOnline/ 杭州电子科技大学(HDU):http://acm.hdu.edu.cn/ 中国科技大学(USTC):http://acm.ustc.edu.cn/ 北京航天航空大学(BUAA)http://acm.buaa.edu.cn/oj/index.php 南京