题目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[]; int main()
{
int id;
char c;
char time[];
int sumF=;
double sumT=;
while(~scanf("%d",&id) && id!=-)
{
scanf(" %c %s",&c,&time);
if(id==)
{
if(sumF>)
printf("%d %.0f\n",sumF,sumT/sumF);
else printf("0 0\n"); for(int i=;i<=;i++)
R[i].SorE='';
sumF=;
sumT=;
}
else
{
if(c=='S')
{
R[id].SorE='S';
R[id].h=(time[]-'')*+(time[]-'');
R[id].m=(time[]-'')*+(time[]-'');
}
else if(c=='E')
{
if(R[id].SorE=='S'){
int hh=(time[]-'')*+(time[]-'');
int mm=(time[]-'')*+(time[]-'');
sumF++;
sumT+=(hh-R[id].h)*+(mm-R[id].m);
}
}
}
}
}
作者: AlvinZH
出处: http://www.cnblogs.com/AlvinZH/
本人Github:https://github.com/Pacsiy/JobDu
本文版权归作者AlvinZH和博客园所有,欢迎转载和商用,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
题目1022:游船出租(hash简单应用)的更多相关文章
- hdu_1861_游船出租_201402282130
游船出租 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submi ...
- 九度oj 题目1022:游船出租
题目描述: 现有公园游船租赁处请你编写一个租船管理系统.当游客租船时,管理员输入船号并按下S键,系统开始计时:当游客还船时,管理员输入船号并按下E键,系统结束计时.船号为不超过100的正整数. ...
- 九度OJ 1022:游船出租 (统计)
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:3670 解决:1444 题目描述: 现有公园游船租赁处请你编写一个租船管理系统.当游客租船时,管理员输入船号并按下S键,系统开始计时 ...
- 九度OnlineJudge之1022:游船出租
题目描述: 现有公园游船租赁处请你编写一个租船管理系统.当游客租船时,管理员输入船号并按下S键,系统开始计时:当游客还船时,管理员输入船号并按下E键,系统结束计时.船号为不超过100的正整数. ...
- 题目1021:统计字符(hash简单应用)
问题来源 http://ac.jobdu.com/problem.php?pid=1021 问题描述 每次输入两个字符串,统计第一个字符串中的每个字符在第二个字符串中出现的次数. 问题分析 太明显了, ...
- 题目1018:统计同成绩学生人数(hash简单应用)
问题来源 http://ac.jobdu.com/problem.php?pid=1018 问题描述 给你n位同学的成绩,问获得某一成绩的学生有多少位. 问题分析 初见此题,有人会想到先将所有成绩存入 ...
- Codeforces Round #267 (Div. 2)D(DFS+单词hash+简单DP)
D. Fedor and Essay time limit per test 2 seconds memory limit per test 256 megabytes input standard ...
- NYOJ 题目77 开灯问题(简单模拟)
开灯问题 时间限制:3000 ms | 内存限制:65535 KB 难度:1 描述 有n盏灯,编号为1~n,第1个人把所有灯打开,第2个人按下所有编号为2 ...
- Leetcode题目169.求众数(简单)
题目描述: 给定一个大小为 n 的数组,找到其中的众数.众数是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素. 你可以假设数组是非空的,并且给定的数组总是存在众数. 示例 1: 输入: [3,2,3] ...
随机推荐
- Mask_RCNN测试自己的模型(练习)
# coding: utf-8 # In[323]: import osimport sysimport randomimport mathimport numpy as npimport skima ...
- 68. Text Justification一行单词 两端对齐
[抄题]: Given an array of words and a width maxWidth, format the text such that each line has exactly ...
- How to Get the Length of File in C
How to get length of file in C //=== int fileLen(FILE *fp) { int nRet = -1; int nPosBak; nPosBak = f ...
- oracle数据库学习记录(持续更新中...)
--------------------------------------------day1------------------------------------------------- 1. ...
- array_combine()
- HDU 6127 Hard challenge (极角扫描)
题意:给定 n 个点,和权值,他们两两相连,每条边的权值就是他们两个点权值的乘积,任意两点之间的直线不经过原点,让你从原点划一条直线,使得经过的直线的权值和最大. 析:直接进行极角扫描,从水平,然后旋 ...
- sqlplus 简单的几个查询语句
sqlplus 是用来和oracle进行交互的工具,可以在电脑端使用,也可以在服务器使用 常用命令 show 显示SQL Plus中的信息 connect 先无条件断 ...
- 所有中心对称五字母域名生成,扫了一下,com的基本上都被注册了。。。
public static void main(String[] args) { String[] letter = new String[]{"i","m", ...
- Transaction And Lock--在事务中使用TRY CATCH
1>当XACT_ABORT被设置为ON时,如果TSQL 语句遇到运行时错误,整个事务会被回滚和结束2>当XACT_ABORT被设置为OFF时,如果TSQL 语句遇到运行时错误,只会回滚当前 ...
- 关于Relay的麻烦之处
问题背景 由于QueryRender是直接将数据塞进Render()里的 handleUpdate = (hasNextPage, xdata) =>{ console.log(3); cons ...