PAT.人口普查(简单哈希思想的应用)

题目描述

某城镇进行人口普查,得到了全体居民的生日。现请你写个程序,找出镇上最年长和最年轻的人。

这里确保每个输入的日期都是合法的,但不一定是合理的——假设已知镇上没有超过200岁的老人,而今天是2014年9月6日,所以超过200岁的生日和未出生的生日都是不合理的,应该被过滤掉。

输入描述:

输入在第一行给出正整数N,取值在(0, 105];随后N行,每行给出1个人的姓名(由不超过5个英文字母组成的字符串)、以及按“yyyy/mm/dd”(即年/月/日)格式给出的生日。题目保证最年长和最年轻的人没有并列。

输出描述:

在一行中顺序输出有效生日的个数、最年长人和最年轻人的姓名,其间以空格分隔。

输入例子:

5John 2001/05/12Tom 1814/09/06Ann 2121/01/30James 1814/09/05Steve 1967/11/20

输出例子:

3 Tom John
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;

int n, ans;

typedef long long ll;

const ll maxn = 2014 * 10000 + 9 * 100 + 6, minn = 1814 * 10000 + 9 * 100 + 6;

const int maxm = 100000 + 5;

struct Peo {
    char name[10];
    ll _hash;
} peo[maxm];

bool cmp(Peo a, Peo b) {
    return a._hash < b._hash;
}

int main() {
    char s[10];
    ll yy, mm, dd;
    scanf("%d", &n);
    while(n --) {
        scanf("%s %lld/%lld/%lld", s, &yy, &mm, &dd);
        yy = yy * 10000 + mm * 100 + dd;
        if(yy <= maxn && yy >= minn) {
            strcpy(peo[ans].name, s);
            peo[ans ++]._hash = yy;
        }
    }
    sort(peo, peo + ans, cmp);
    printf("%d %s %s\n", ans, peo[0].name, peo[ans - 1].name);
    return 0;
}


原文地址:https://www.cnblogs.com/bianjunting/p/12443425.html

时间: 2024-10-21 20:42:31

PAT.人口普查(简单哈希思想的应用)的相关文章

PAT (Basic Level) Practise:1028. 人口普查

[题目链接] 某城镇进行人口普查,得到了全体居民的生日.现请你写个程序,找出镇上最年长和最年轻的人. 这里确保每个输入的日期都是合法的,但不一定是合理的——假设已知镇上没有超过200岁的老人,而今天是2014年9月6日,所以超过200岁的生日和未出生的生日都是不合理的,应该被过滤掉. 输入格式: 输入在第一行给出正整数N,取值在(0, 105]:随后N行,每行给出1个人的姓名(由不超过5个英文字母组成的字符串).以及按“yyyy/mm/dd”(即年/月/日)格式给出的生日.题目保证最年长和最年轻

【机器学习实践二】人口普查统计

产品地址:https://data.aliyun.com/product/learn?spm=a21gt.99266.416540.102.OwEfx2 一.背景 感谢大家关注玩转数据系列文章,我们希望通过在阿里云机器学习平台上提供demo数据并搭建相关的实验流程的方式来帮助大家学习如何通过算法来挖掘数据中的价值.本系列文章包含详细的实验流程以及相关的文档教程,欢迎大家进入阿里云数加机器学习平台体验.实验案例请在新建实验页签查看,如下图. 本章作为玩转数据系列的开篇,先提供一个简单的案例给大家热

【机器学习PAI实践二】人口普查统计

一.背景 感谢大家关注玩转数据系列文章,我们希望通过在阿里云机器学习平台上提供demo数据并搭建相关的实验流程的方式来帮助大家学习如何通过算法来挖掘数据中的价值.本系列文章包含详细的实验流程以及相关的文档教程,欢迎大家进入阿里云数加机器学习平台体验.实验案例请在新建实验页签查看,如下图.  本章作为玩转数据系列的开篇,先提供一个简单的案例给大家热身.通过截取一份人口普查的数据,对学历和收入进行统计和分析.主要目的是帮助大家学习阿里云机器学习实验的搭建流程和组件的使用方式.任何关于阿里云机器学习方

P 1028 人口普查

转跳点:?? 1028 人口普查 某城镇进行人口普查,得到了全体居民的生日.现请你写个程序,找出镇上最年长和最年轻的人. 这里确保每个输入的日期都是合法的,但不一定是合理的——假设已知镇上没有超过 200 岁的老人,而今天是 2014 年 9 月 6 日,所以超过 200 岁的生日和未出生的生日都是不合理的,应该被过滤掉. 输入格式: 输入在第一行给出正整数 N,取值在(:随后 N 行,每行给出 1 个人的姓名(由不超过 5 个英文字母组成的字符串).以及按 yyyy/mm/dd(即年/月/日)

hrbust1164, 1287_____hrbust上的简单哈希

hrbust1164, 1287_____hrbust上的简单哈希 hrbust1164 Description 用计算机随机生成了N个0到910305(包含0和910305)之间的随机整数(N≤100000000),对于其中重复的数字,只保留一个,把其余相同的数去掉.然后再把这些数从小到大排序. 请你完成"去重"与"排序"的工作. Input 输入有2行,第1行为1个正整数,表示所生成的随机数的个数: N 第2行有N个用空格隔开的正整数,为所产生的随机数. Out

简单的数学思想

l  筛法求素数 把从1开始的.某一范围内的正整数从小到大顺序排列, 1不是素数,首先把它筛掉.剩下的数中选择最小的数是素数,然后去掉它的倍数.依次类推,直到筛子为空时结束.如有: 1 2 3 4 5 6 7 89 10 11 12 13 14 1516 17 18 19 20 21 22 23 24 2526 27 28 29 30 1不是素数,去掉.剩下的数中2最小,是素数,去掉2的倍数,余下的数是: 3 5 7 9 11 13 1517 19 21 23 25 27 29 剩下的数中3最小

ASP.NET MVC 简单的分页思想与实现

, 作为一个程序猿,数据分页是每个人都会遇到的问题.解决方案更是琳琅满目,花样百出.但基本的思想都是差不多的. 下面给大家分享一个简单的分页器,让初学者了解一下最简单的分页思想,以及在ASP.NET MVC中的简单实现与应用. 一,定义分页器类 在ASP.net MVC中,分页的数据源可能是各种不同的类型,所以最好使用泛型来定义. public class PagingHelper<T> 二,基本三要素 实现分页人所共知的三个基本属性: DataSource:数据源,要知道数据源共计多少条数据

1028. 人口普查

1028. 人口普查(20) 时间限制 200 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 某城镇进行人口普查,得到了全体居民的生日.现请你写个程序,找出镇上最年长和最年轻的人. 这里确保每个输入的日期都是合法的,但不一定是合理的——假设已知镇上没有超过200岁的老人,而今天是2014年9月6日,所以超过200岁的生日和未出生的生日都是不合理的,应该被过滤掉. 输入格式: 输入在第一行给出正整数N,取值在(0, 105]:随

1028. 人口普查(20)

1028. 人口普查(20) 某城镇进行人口普查,得到了全体居民的生日.现请你写个程序,找出镇上最年长和最年轻的人. 这里确保每个输入的日期都是合法的,但不一定是合理的--假设已知镇上没有超过200岁的老人,而今天是2014年9月6日,所以超过200岁的生日和未出生的生日都是不合理的,应该被过滤掉. 输入格式: 输入在第一行给出正整数N,取值在(0, 105]:随后N行,每行给出1个人的姓名(由不超过5个英文字母组成的字符串).以及按"yyyy/mm/dd"(即年/月/日)格式给出的生