生日相同 2.0

总时间限制: 
1000ms

内存限制: 
65536kB
描述

在一个有180人的大班级中,存在两个人生日相同的概率非常大,现给出每个学生的名字,出生月日。试找出所有生日相同的学生。

输入
第一行为整数n,表示有n个学生,n ≤ 180。此后每行包含一个字符串和两个整数,分别表示学生的名字(名字第一个字母大写,其余小写,不含空格,且长度小于20)和出生月(1 ≤ m ≤ 12)日(1 ≤ d ≤ 31)。名字、月、日之间用一个空格分隔
输出
每组生日相同的学生,输出一行,其中前两个数字表示月和日,后面跟着所有在当天出生的学生的名字,数字、名字之间都用一个空格分隔。对所有的输出,要求按日期从前到后的顺序输出。 对生日相同的名字,按名字从短到长按序输出,长度相同的按字典序输出。如没有生日相同的学生,输出”None”
样例输入
6
Avril 3 2
Candy 4 5
Tim 3 2
Sufia 4 5
Lagrange 4 5
Bill 3 2
样例输出
3 2 Tim Bill Avril
4 5 Candy Sufia Lagrange

string 的STL大法+模拟
 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 struct node{
 4     string s;
 5     int yue,ri;
 6 }a[200];
 7 int N;
 8 int cmp(const node&w,const node&e){
 9     if(w.yue<e.yue) return 1;
10     else if(w.yue==e.yue){
11         if(w.ri<e.ri) return 1;
12         else if(w.ri==e.ri){
13             if(w.s.length()<e.s.length()) return 1;
14             else if(w.s.length()==e.s.length()){
15                 if(w.s<e.s) return 1;
16             }
17         }
18     }
19     return 0;
20 }
21 int tot;
22 string ans[200];
23 bool jud=false;
24 int main(){
25     scanf("%d",&N);
26     for(int i=1;i<=N;i++){
27         cin>>a[i].s;
28         cin>>a[i].yue>>a[i].ri;
29     }
30     sort(a+1,a+N+1,cmp);
31     a[N+1].yue=100; a[N+1].ri=100;
32     for(int i=2;i<=N+1;i++){
33         if(a[i].yue==a[i-1].yue&&a[i].ri==a[i-1].ri){
34             tot++;
35             if(tot==1){
36                 ans[tot]=a[i-1].s;
37                 ans[++tot]=a[i].s;
38             }
39             else{
40                 ans[tot]=a[i].s;
41             }
42         }
43         else{
44             if(tot>=2){
45                 jud=true;
46                 cout<<a[i-1].yue<<" "<<a[i-1].ri<<" ";
47                 for(int i=1;i<=tot;i++){
48                     cout<<ans[i]<<" ";
49                 }
50                 cout<<endl;
51                 tot=0;
52             }
53         }
54     }
55     if(jud==false){
56         cout<<"None";
57     }
58     return 0;
59 }

时间: 2025-01-05 20:15:06

生日相同 2.0的相关文章

概率 light oj 1104

t个数据 n天一年  至少2个人在同一天生日的概率>=0.5 问至少多少人 显然要从反面考虑 设365天 都在不同一天的概率 p(num)=1*364/365*363/365...; =(day***(day-num+1) )/(day)的num次: !p(num)=1-p(num); 而p(n)前一项和后一项更容易找规律 具体见代码 1 #include<stdio.h> 2 3 int main() 4 { 5 int t,ca; 6 scanf("%d",&am

一些实用的mysql语句(不断积累更新)

1.数据表里仅仅有生日字段,想计算出其年龄的mysql语句: SELECT *,DATE_FORMAT(FROM_DAYS(TO_DAYS(NOW( ))-TO_DAYS(生日字段)),'%Y')+0 AS age FROM 表名;

HPU1247 HH的一万天 【坑】

1247: HH的一万天 Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 115  Solved: 42 [Submit][Status][Web Board] [Edit] Description HH的生日是YY年MM月DD日,他想知道自己出生后第一万天纪念日的日期(出生日算第0天). Input 输入有多行 第一行先输入一个数字N 接下来第2行到第N+1行,每行输入一个时间,格式为YY MM DD 其中1949<=YY<=2006,日期绝对

hpu第五届acm比赛

vijos P1211生日日数 描述 CCC老师的生日是YY年MM月DD日,他想知道自己出生后第一万天纪念日的日期(出生日算第0天). 格式 输入格式 从文件的第一行分别读入YY,MM,DD其中1949<=YY<=2006,日期绝对合法. 输出格式 输出文件只有一行,即CCC老师生日第一万天以后的日期,格式为 “Y-M-D”. 样例1 样例输入1[复制] 1979 4 16 样例输出1[复制] 2006-9-1题解:坑点在,2月29,1月1,12月31,代码: #include<iost

欢迎大家来评论 我是 新手

package cn.Happ.day03;import java.util.Scanner;public class Happy { public static void main(String[] args) {  // TODO Auto-generated method stub  System.out.println("MyShopping管理系统>客户信息管理>添加客户信息\n");  int custNo =0;//会员号  String birthday;/

没事 来聊一聊

我是新手   想在这平台认识高手 package cn.Happ.day03;import java.util.Scanner;public class Happy { public static void main(String[] args) {  // TODO Auto-generated method stub  System.out.println("MyShopping管理系统>客户信息管理>添加客户信息\n");  int custNo =0;//会员号  

【北大先修课】计算概论(A)题库全代码

题目很水就是全都是坑真是丧心病狂啊 把代码留下造福后来人QωQ 结构体与链表练习 生日相同2.0 #include<iostream> #include<cstdio> #include<cstring> #include<cmath> #include<algorithm> #define MAXN 200 using namespace std; struct st { int m,d; string name; bool operator&

WPF的数据绑定详细介绍

数据绑定:是应用程序 UI 与业务逻辑之间建立连接的过程. 如果绑定正确设置并且数据提供正确通知,则当数据的值发生更改时,绑定到数据的视觉元素会自动反映更改. 数据绑定可能还意味着如果视觉元素中数据的外部表现形式发生更改,则基础数据可以自动更新以反映更改. 一.WPF数据绑定的概要 数据绑定:是应用程序 UI 与业务逻辑之间建立连接的过程. 如果绑定正确设置并且数据提供正确通知,则当数据的值发生更改时,绑定到数据的视觉元素会自动反映更改. 数据绑定可能还意味着如果视觉元素中数据的外部表现形式发生

一些有用的mysql语句(不断积累更新)

1.数据表里只有生日字段,想计算出其年龄的mysql语句: SELECT *,DATE_FORMAT(FROM_DAYS(TO_DAYS(NOW( ))-TO_DAYS(生日字段)),'%Y')+0 AS age FROM 表名;