zoukankan      html  css  js  c++  java
  • 牛客练习赛28

    A.生日宴

    题目描述

    Akoasm有一群朋友,但是由于Akoasm是人赢朋友太多,当他想知道某一天谁生日时,总是很头疼。于是,他请你来帮忙。

    Akoasm会给出他所有朋友的名字与出生年月日,名字为10个字符以内的英文字母,出生年月日为8位数字如19990320。每一个询问包含月份与日期和一个整数k,输出生日在这天的年龄第k大的人。题目保证每一个朋友的出生年月日不同,且出生年月日均在19000101至19991231,保证一定有答案。

    询问中生日为四位,如0320,1211。

    输入描述:

    输入文件第一行包含1个正整数n,m,表示一共有n个朋友,一共有m次询问。
    接下来n行,每行一个字符串加八位数字,中间用一个空格隔开,分别表示名字和出生年月日。
    接下来m行,每行2个正整数k与s,表示求出生日在s的年龄第k大的人。

    输出描述:

    一共m行,每行一个字符串表示答案
    示例1

    输入

    3 2
    Lee 19380220
    Jane 19400220
    Mary 19990321
    2 0220
    1 0321

    输出

    Jane
    Mary

    备注:

    对于100%的数据有n<=1000,m<=20。
    解题思路:先将年份升序排,再对月份日期升序排,然后暴力查找匹配的月份日期即可。
    AC代码:
     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 typedef long long LL;
     4 int n,m,k,pos;string str,tmp,s;
     5 struct node{
     6     string s1,s2,obj;
     7 }arr[1005];
     8 bool cmp(node a,node b){
     9     if(a.s2!=b.s2)return a.s2<b.s2;
    10     else return a.s1<b.s1;
    11 }
    12 int main(){
    13     while(cin>>n>>m){
    14         for(int i=0;i<n;++i){
    15             cin>>str>>tmp;
    16             arr[i].s1=tmp.substr(0,4);//从起始位置0截取4个字符
    17             arr[i].s2=tmp.substr(4,4);
    18             //cout<<arr[i].s1<<' '<<arr[i].s2<<endl;
    19             arr[i].obj=str;
    20         }
    21         sort(arr,arr+n,cmp);
    22         while(m--){
    23             cin>>k>>s;pos=0;
    24             for(int i=0;i<n;++i){
    25                 if(arr[i].s2==s)pos++;
    26                 if(pos==k){cout<<arr[i].obj<<endl;break;}
    27             }
    28         }
    29     }
    30     return 0;
    31 }
  • 相关阅读:
    Java中基于线程池的任务调度设计
    Java中数值型,字符型及字符串的相互转换
    Java编程中必备的十种技能
    Java键盘读入方法
    Java中数据类型及运算符的注意事项
    Java抽象类是否可继承实体类
    Java多线程:start(),sleep(),yield(),join()
    Java线程静态在对象缓存中的妙用
    webAPI
    javascript中的作用域和变量提升
  • 原文地址:https://www.cnblogs.com/acgoto/p/9822086.html
Copyright © 2011-2022 走看看