题目链接:https://www.nowcoder.com/acm/contest/200/A

链接:https://www.nowcoder.com/acm/contest/200/A
来源:牛客网

时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 32768K,其他语言65536K
64bit IO Format: %lld

题目描述

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

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

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

输入描述:

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

输出描述:

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

输入例子:
  1. 3 2
  2. Lee 19380220
  3. Jane 19400220
  4. Mary 19990321
  5. 2 0220
  6. 1 0321
输出例子:
  1. Jane
  2. Mary

-->

示例1

输入

复制

  1. 3 2
  2. Lee 19380220
  3. Jane 19400220
  4. Mary 19990321
  5. 2 0220
  6. 1 0321

输出

复制

  1. Jane
  2. Mary

备注:

  1. 对于100%的数据有n<=1000,m<=20
  2.  
  3. 题意很简单,这里就不多解释了
    思路:因为询问是一个月份,求的是在这个月份的第K大的人:
    因为求的是相同月份第k大的人, 首先我们要求得在这个月份里的所有人,这就可以用set 来存储了,分别存储月份和出生年月,首先找到第一个该月份的人,然后它的后面k个就是我们要的答案了
    刚开始以为可以用multimap来做,后来查阅资料才发现multimap对键值相同的数排序是根据插入顺序排的,但是我们需要的是按照大小来排序,所以是不行的
    看代码:
  1. #include<iostream>
  2. #include<string.h>
  3. #include<map>
  4. #include<cstdio>
  5. #include<cstring>
  6. #include<stdio.h>
  7. #include<cmath>
  8. #include<ctype.h>
  9. #include<math.h>
  10. #include<algorithm>
  11. #include<set>
  12. #include<queue>
  13. typedef long long ll;
  14. using namespace std;
  15. const ll mod=1e9;
  16. const int maxn=+;
  17. const int maxm=;
  18. const int maxx=1e4+;
  19. const ll maxe=+;
  20. #define INF 0x3f3f3f3f3f3f
  21. #define Lson l,mid,rt<<1
  22. #define Rson mid+1,r,rt<<1|1
  23. int main()
  24. {
  25. int n,m,k;
  26. string a,b,c;
  27. map<string,string>s;//一对一的关系,用map很合适
  28. set<pair<string,string> >s1;//用于存储月份和出生年月,因为set会从小到大自动排序,先比较first,再比较second
  29. set<pair<string,string> >::iterator it;
  30. cin>>n>>m;
  31. for(int i=;i<n;i++)
  32. {
  33. cin>>a>>b;//输入名字和出生年月
  34. c=b.substr(,);//获取月份
  35. s[b]=a;//将出生年月为这一天的人和名字用map对应起来,一对一的关系
  36. s1.insert(make_pair(c,b));//把出生年月和月存在s1中
  37. }
  38. for(int i=;i<m;i++)
  39. {
  40. cin>>k>>a;
  41. it=s1.begin();
  42. for(it;it!=s1.end();it++)
  43. {
  44. if(it->first==a)//遍历找到月份为a的人
  45. {
  46. for(int j=;j<k;j++)//找到第K个
  47. it++;
  48. cout<<s[it->second]<<endl;//直接输出就可以了
  49. break;
  50. }
  51. }
  52.  
  53. }
  54. return ;
  55. }

牛客网练习赛28A的更多相关文章

  1. 牛客网练习赛23 F 托米的游戏

    链接:https://www.nowcoder.com/acm/contest/156/F 来源:牛客网 题目描述 题目背景编不下去了 托米有一棵有根树 T, 树根为1,每轮他会在剩下的子树中等概率一 ...

  2. 牛客网练习赛18 A 【数论/整数划分得到乘积最大/快速乘】

    链接:https://www.nowcoder.com/acm/contest/110/A 来源:牛客网 题目描述 这题要你回答T个询问,给你一个正整数S,若有若干个正整数的和为S,则这若干的数的乘积 ...

  3. 牛客网练习赛26B(简单的dp)

    题目链接:https://www.nowcoder.com/acm/contest/180/B 链接:https://www.nowcoder.com/acm/contest/180/B来源:牛客网 ...

  4. 牛客网练习赛34-D-little w and Exchange(思维题)

    链接:https://ac.nowcoder.com/acm/contest/297/D 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言5242 ...

  5. 牛客网练习赛25 C 再编号

    链接:https://www.nowcoder.com/acm/contest/158/C来源:牛客网 定义对 a 的再编号为 a' ,满足 . 现在有 m 次询问,每次给定 x,t ,表示询问经过 ...

  6. 牛客网练习赛t2(线段树)

    题解: 好像因为他说了 数据范围全部在ll以内 所以直接暴力就可以过了 比较正常是用线段树来维护 洛谷上有道模板题是支持加,乘,区间和 而这题还多了区间平方和的操作 按照那题的操作 我们维护的时候保证 ...

  7. 牛客网练习赛7-B-购物

    在遥远的东方,有一家糖果专卖店. 这家糖果店将会在每天出售一些糖果,它每天都会生产出m个糖果,第i天的第j个糖果价格为C[i][j]元. 现在的你想要在接下来的n天去糖果店进行选购,你每天可以买多个糖 ...

  8. 牛客网练习赛7-D-无向图(bfs,链式前向星)

    题意:中文题: 思路:就是找某个点距离其他点的距离,他给你很多点也无所谓.用一个dist[]数组,这个数组保存的是他给你的点到其他点的最短距离且标记的作用,然后bfs搜索就行了. 代码: #inclu ...

  9. 牛客网练习赛43-C(图论)

    题目链接:https://ac.nowcoder.com/acm/contest/548/C 题意:有n个知识点,学会每个知识点花T[i],已经学会了其中k个知识点,有m组关系,t1,t2,t3,表示 ...

随机推荐

  1. scala中lazy

    Scala中通过lazy关键字来定义惰性变量,惰性变量只能是不可变变量.只有在调用惰性变量的时候,才会去实例化这个变量

  2. Java50道经典习题-程序46 字符串连接

    题目:编写一个两个字符串连接的程序 import java.util.Scanner; public class Prog46 { public static void main(String[] a ...

  3. C++: I/O流详解(三)——串流

    一.串流 串流类是 ios 中的派生类 C++的串流对象可以连接string对象或字符串 串流提取数据时对字符串按变量类型解释:插入数据时把类型 数据转换成字符串 串流I/O具有格式化功能 例: #i ...

  4. EIP-uni-app框架-建立项目

    uni-app介绍 uni-app 是一个使用 Vue.js 开发跨平台应用的前端框架,开发者编写一套代码,可编译到iOS.Android.H5.小程序等多个平台.uni-app在跨端数量,扩展能力, ...

  5. 从零开始安装 Ambari (4) -- 通过 Ambari 部署 hadoop 集群

    1. 打开 http://192.168.242.181:8080  登陆的用户名/密码是 : admin/admin 2. 点击 “LAUNCH INSTALL WIZARD”,开始创建一个集群 3 ...

  6. SQL sum和group by HAVING

    Aggregate functions (like SUM) often need an added GROUP BY functionality. 集合函数(类似SUM)经常需要用GROUP BY来 ...

  7. #6432. 「PKUSC2018」真实排名(组合数学)

    题面 传送门 题解 这数据范围--这输出大小--这模数--太有迷惑性了-- 首先对于\(0\)来说,不管怎么选它们的排名都不会变,这个先特判掉 对于一个\(a_i\)来说,如果它不选,那么所有大于等于 ...

  8. CUDA中自动初始化显卡设备宏

    每次为了减少初始化的工作量,可以写入下面的宏. #define CUT_DEVICE_INIT(ARGC,ARGV){ \ int deviceCount; \ CUDA_SAFE_CALL_NO_S ...

  9. IDEA mybatis-generator 逆向工程

    1.在maven工程中的resource中创建generatorConfig.xml 2.配置generatorConfig.xml <?xml version="1.0" ...

  10. node 后台搭建笔记

    *注:本文是个人记录,非常粗略 1.建立server服务的文件被单独放置在一个文件夹下或最外层 2.src文件包含:controller/model/routes 文件夹 和 app.js文件