[I] Eligibility

Regional Contest Director Osama Ismail knows that an individual cannot participate in the regional 
contest more than 5 times. Given a list of contestant names and the previous years they participated 

in, print which contestant is eligible.


Input Specification

The first line of the input contains a single integer T representing the number of the test cases

The first line of each test case contains a single integer N

N lines follow in this test case each having the format "Name Year" denoting that contestant Name 

participated in a regional contest in year Year

T ≤ 100

0 ≤ N ≤ 500

Name is sequence of lowercase English letters, spaces and contains up to 20 characters

1970 ≤ Year ≤ 2070

Note that since he collected the data from multiple sources it may contain duplicate records (if a 

contestant X have competed in year Y, you might find multiple lines "X Y" in the same test case)


Output Specification

For each test case, print a line containing the test case number as formatted in the sample and then 

for each eligible contestant print his\her name on a single line and note that you must print the names 

of the contestants in lexicographic order


Sample Input

1

6

ahmed 2010

ahmed 2011

ahmed 2009

ahmed 2008

ahmed 2005

mohamed 2001

Sample Output

Case #1:

mohamed

此题,水也,水题如何?比的就是方法,题意大概就是输入名字加上时间,每个人不许出现在不同的5个年份,排除之后还要字典序排序,亲们啊,听说名字和年份之间只有一个空格哦,听出我的意思了没?就是可能会有很多个空格,除了里年份最近的那个,其他都应该是名字的内容- -!

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
struct ssss    //杠杠滴直接结构体搞起
{
    char name[55];  //名字
    int len;  //名字这个字符串的总长度
}ss[555];
bool cmp(const ssss &a,const ssss &b)  //字典序排序的小sort函数--!
{
    if(strcmp(a.name,b.name)<0)return 1;  //非递增
    return 0;
}
int main (void)
{
    int t,n,i,j,k,l,flog,m=1;
    char s[55];
    scanf("%d",&t);
    while(t--&&scanf("%d%*c",&n))
    {
        for(i=0;i<n;i++)
        gets(ss[i].name),ss[i].len=strlen(ss[i].name);  //不知道名字尾端空格数,所以直接gets
        sort(ss,ss+n,cmp);  //排序时带上年龄直接排序,没影响
        for(i=0;i<n;i++)ss[i].name[ss[i].len-5]='\0';  //打断,就是把字符串最后的年份切出来,这可是我的精华啊--!
        cout<<"Case #"<<m++<<":"<<endl;
        for(i=k=0;i<n;i++)
        {
            if(i==0){strcpy(s,ss[i].name),k=1;continue;}  //第一次直接在s里面放进第一个名字,同时记录出现次数为1
            if(!strcmp(ss[i].name,ss[i-1].name))  //如果名字相同
            {
                if(strcmp(ss[i].name+ss[i].len-4,ss[i-1].name+ss[i].len-4))k++;  //如果年份不同就出现次数加一,先前是切断了,只是在名字最后面那个后面画上‘\0’,但是实际内存还是存在的,我只要能找到他的位置就可以再次利用他,就相当于年份被我变成了一个没有名字的静态字符串数组
            }
            else  //名字不同
            {
                if(k<5)cout<<s<<endl;  //如果没有出现5次以上就输出
                strcpy(s,ss[i].name);k=1;  //替换s,初始化k
            }
        }
        if(k<5)cout<<s<<endl;  //注意,最后那一个还是要考虑哦
    }
    return 0;
}

这里讲的就是对物理内存的运用的一个小技巧,文字永远比不上构图:s[111]

地址  1  2  3  4  5  6  7  8  9  10  11  12

内容  a  h  m e  d      2  0  1   0    \0   \0    //6下面是空格,不是空

然后被我折腾之后:

地址  1  2  3  4  5  6  7  8  9  10  11  12

内容  a  h  m e  d  \0 2  0  1   0    \0   \0    //6下面变成空

这样我要比较名字就直接调用s就好了,因为函数的停止是碰到\0的时候,所以我对s的抄作只会到地址5,但是后面的年份我还是要用的,有什么办法?先前不是保存了总长度的么?s[6]==s[总长度-4]?虽然后面的年份不属于s了,但是我可以根据他们相对于s的位置找到他,完了,睡觉--!

HUNNU--湖师大--11410--Eligibility的更多相关文章

  1. hunnu 11313 无重复元素序列的最长公共子序列转化成最长递增子序列 求法及证明

    题目:http://acm.hunnu.edu.cn/online/?action=problem&type=show&id=11313 湖师大的比赛,见我的另一篇水题题解,这里要说的 ...

  2. 华为云FusionInsight湖仓一体解决方案的前世今生

    摘要:华为云发布新一代智能数据湖华为云FusionInsight时再次提到了湖仓一体理念,那我们就来看看湖仓一体的来世今生. 伴随5G.大数据.AI.IoT的飞速发展,数据呈现大规模.多样性的极速增长 ...

  3. 为川师大女生支招 15年如何还200W

    就在昨儿一条新闻火遍全网,川师大21岁女生樊师贝发帖称,希望有人借她200万,为父母在城里买房15年还清,至于利息“可以用后半生来陪伴你”.她说,六旬父亲要负担家用,哥哥啃老,而她目前一分钱都还没挣到 ...

  4. hihoCoder 1425 : What a Beautiful Lake(美丽滴湖)

    hihoCoder #1425 : What a Beautiful Lake(美丽滴湖) 时间限制:1000ms 单点时限:1000ms 内存限制:256MB Description - 题目描述 ...

  5. 一塔湖图(codevs 1024)

    题目描述 Description 小松所在的PK大学校园又称作燕园,是一个十分美丽的校园.有博雅塔,未名湖,亚洲最大的高校图书馆,人称“一塔湖图”.但是由于燕园的历史比较悠久,所以很多的老房子都要不断 ...

  6. 湖大 11404 manacher

    链接   http://acm.hunnu.edu.cn/online/?action=problem&type=show&id=11404&courseid=0 求 最长回文 ...

  7. hunnu Sum of f(x)

    http://acm.hunnu.edu.cn/online/?action=problem&type=show&id=11546&courseid=0 Sum of f(x) ...

  8. hunnu 小明的烦恼——找字符串

    http://acm.hunnu.edu.cn/online/?action=problem&type=show&id=11544&courseid=0 小明的烦恼——找字符串 ...

  9. codevs1024一塔湖图(丧心病狂的建图)

    /* 丧心病狂的最短路 关键是建图 根据题目中给的路 拆出节点来 建图 (i,j) -->(j-1)*n+i 然后根据障碍 把死路 湖覆盖的dis改变成极大值 然后Floyd 然后 然后就没有然 ...

  10. python瓦登尔湖词频统计

    #瓦登尔湖词频统计: import string path = 'D:/python3/Walden.txt' with open(path,'r',encoding= 'utf-8') as tex ...

随机推荐

  1. retrofit2 使用教程 及 Android 网络架构搭建 (原创)

    squareup 推出 retrofit2 已经有一段时间了,现在的版本比较稳定,没有什么大坑了.网络上的教程要么太简单,只是个Demo:要么有些落时,要么复用性比较差,所以自己写个教程,供大家参考. ...

  2. SVN设置钩子文件限制提交文件时必须填写更新日志

    进入相应SVN仓库hooks目录,编辑文件pre-commit #!/bin/sh # PRE-COMMIT HOOK## The pre-commit hook is invoked before ...

  3. Apache下Worker模式MPM参数分析

    我的worker.c配置如下:<IfModule mpm_worker_module> ServerLimit   32 ThreadLimit   128 StartServers   ...

  4. 安卓 报错 Check the Eclipse log for stack trace.

    移除Android Dependencies就行了. 在properties的Libraries里

  5. 通过dbcp链接池对数据库操作报 Cannot create PoolableConnectionFactory (Could not create connection to database server. Attempted reconnect 3 times. Giving up.)--解决方案

    org.springframework.transaction.CannotCreateTransactionException: Could not open JDBC Connection for ...

  6. DropDownList自动生成年月日

    DropDownList自动生成年月日 aspx页面上有三个dropdownlist控件, dropdownlist1 表示年,dropdownlist2表示月,dropdownlist3表示天: 注 ...

  7. Python自动化运维之19、Paramiko模块和堡垒机实战

    paramiko模块 paramiko是一个用于做远程控制的模块,使用该模块可以对远程服务器进行命令或文件操作,值得一说的是,fabric和ansible内部的远程管理就是使用的paramiko来现实 ...

  8. Equivalent Strings (字符串相等?)

    Equivalent Strings   E - 暴力求解.DFS Time Limit:2000MS     Memory Limit:262144KB     64bit IO Format:%I ...

  9. 牛人总结python中string模块各属性以及函数的用法,果断转了,好东西

    http://blog.chinaunix.net/uid-25992400-id-3283846.html http://blog.csdn.net/xiaoxiaoniaoer1/article/ ...

  10. IOS--UITextView 多行文本的输入和显示 的使用方法详细

    IOS--UITextView 多行文本的输入和显示 的使用方法详细   // UITextView的常用方法 主要用来输入和显示多行文本信息 UITextView *oneTextView = [[ ...