788. 昵称

★☆   输入文件:nickname.in   输出文件:nickname.out   简单对比
时间限制:1 s   内存限制:128 MB

【问题描述】

ZSUQ送信者与腾讯QQ相似。每个用户需要为自己起一个昵称。不同的用户有不同的昵称。一些普通的名字像“Tom”、“Marry”和“Kate”会经常被用到。最近的一次调查中,ZSUQ公司发现有超过5000个独特的昵称正在被使用。
作为一个ZSUQ公司的成员,你需要写一个报告,每一个昵称有多少个用户。你用于一个所有用户昵称的完整清单。注意昵称是不分大小写的。

【输入格式】

文件第一行包括所有整形数据表示测试数据的个数。
在每组测试数据中,第一行有一个整数N(0<n≤100000),下面n行描述n个用户的昵称。每个昵称不超过100个字符。两个测试数据之间有空行。< p="">

【输出格式】

对于每组测试数据,给出一个独特昵称的清单。每一行,后面有一个空格,数字表示有这个昵称的用户个数。名称按字母序,每一行的开头或结尾没有空格。昵称都是小写字母,每两组数据间有空行。

【输入样例】

输入文件名: nickname.in



carp 
inkfish 
peipei 
carp

输出文件名: nickname.out

carp 2 
inkfish 1 
peipei 1

trie树模版

屠龙宝刀点击就送

#include <algorithm>
#include <cstring>
#include <cstdio>
using namespace std;
struct node
{
int pos;
node * next[];
}*root;
struct nicheng
{
char nc[];
int num;
bool operator<(nicheng a)const
{
int l=;while(nc[l]==a.nc[l]) l++;
return nc[l]<a.nc[l];
}
}yh[];
node *create()
{
node *rt=new node;
rt->pos=;
memset(rt->next,,sizeof(rt->next));
return rt;
}
int T;
void ins(int po,char *a)
{
char *q=a;
node *p=root;
while(*q)
{
int id=*q-'a'+;
if(p->next[id]==NULL) p->next[id]=create();
p=p->next[id];
q++;
}
p->pos=po;
}
int search(char *a)
{
char *q=a;
node * p=root;
while(*q)
{
int id=*q-'a'+;
if(p->next[id]==NULL) return ;
p=p->next[id];
q++;
}
return p->pos;
}
int main()
{
freopen("nickname.in","r",stdin);
freopen("nickname.out","w",stdout);
scanf("%d",&T);
for(int n;T--;)
{
scanf("%d",&n);
int tot=;root=create();memset(yh,,sizeof(yh));
for(int i=;i<=n;i++)
{
scanf("%s",yh[++tot].nc);
for(int i=;i<strlen(yh[tot].nc);i++) if('A'<=yh[tot].nc[i]&&yh[tot].nc[i]<='Z') yh[tot].nc[i]+=;
int pos=search(yh[tot].nc);
if(!pos)
{
ins(tot,yh[tot].nc);
yh[tot].num=;
}
else yh[pos].num++,--tot;
}
sort(yh+,yh++tot);
for(int i=;i<=tot;i++)
printf("%s %d\n",yh[i].nc,yh[i].num);
}
return ;
}

COGS 788. 昵称的更多相关文章

  1. (转)iOS开发中邮箱,电话号码,身份证,密码,昵称正则表达式验证

    之前看到觉得不错 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 ...

  2. 【COGS 254】【POI 2001】交通网络图

    http://www.cogs.top/cogs/problem/problem.php?pid=254 dist[i]表示能最早到达i点的时间.这样就可以用最短路模型来转移了. #include&l ...

  3. 【COGS】894. 追查坏牛奶

    http://cojs.tk/cogs/problem/problem.php?pid=894 题意:n个点m条边的加权网络,求最少边数的按编号字典序最小的最小割.(n<=32, m<=1 ...

  4. 【COGS】147. [USACO Jan08] 架设电话线(二分+spfa)

    http://cojs.tk/cogs/problem/problem.php?pid=147 学到新姿势了orz 这题求的是一条1-n的路径的最大路径最小. 当然是在k以外的. 我们可以转换一下. ...

  5. 【COGS & USACO Training】710. 命名那个数字(hash+水题+dfs)

    http://cojs.tk/cogs/problem/problem.php?pid=710 近日开始刷水... 此题我为了练一下hash...但是hash跑得比暴力还慢.. 不言而喻... #in ...

  6. 【COGS & USACO】896. 圈奶牛(凸包)

    http://cojs.tk/cogs/problem/problem.php?pid=896 我的计算几何入门题... 看了看白书的计算几何部分,,恩好嘛.. 乃们都用向量!!!! 干嘛非要将2个点 ...

  7. 【COGS】714. USACO 1.3.2混合牛奶(贪心+水题)

    http://cojs.tk/cogs/problem/problem.php?pid=714 在hzwer的刷题记录上,默默地先跳过2题T_T...求凸包和期望的..T_T那是个啥..得好好学习 看 ...

  8. C# 玩家昵称屏蔽敏感字眼

    功能:使用正则  对玩家昵称处理,如果含有 屏蔽字库里的敏感字眼进行屏蔽.已封装成dll 1.屏蔽字库处理成所需要的正则格式:(所需正则表达式格式:".*((XX)|(XX)|(XX)|.. ...

  9. php 解决微信昵称emoji表情插入MySQL报错

    在PHP接受到微信用户昵称入库的时候报错 原因:utf-8 最大3个字节,而emoji占4个字节 解决办法: 1.修改mysql 数据库的字符集,改为utf8mb4,但是前提是MySQL的版本需要5. ...

随机推荐

  1. 怎么在Ubuntu下设置程序的快捷键

    参考 http://jingyan.baidu.com/article/1e5468f97f9e75484861b773.html 我的系统是 64bit Ubuntu14.04 我设置了 gedit ...

  2. vsftpd总结

    1 vsftps配置文件详解 (1)/user/sbin/vsftpd  主程序 (2)/etc/rc.d/init.d/vsftpd 启动脚本 (3)/etc/pam.d/vsftpd (file= ...

  3. 【Linux学习】Linux文件系统4—Linux文件硬链接与软连接

    Linux文件系统4-Linux文件硬链接与软连接 inode:索引节点 (连接文件)link 一.文件硬链接 1.Linux文件系统中,inode只相同的文件是硬链接文件 2.不同文件名,inode ...

  4. [Xcode 实际操作]一、博主领进门-(11)代码区的样式设置,设置模拟器启动的声音

    目录:[Swift]Xcode实际操作 本文将演示如何对Xcode代码区进行样式设置,从而调整代码的外观属性.随便打开一份代码文件. [Xcode]->[Preferences]参数设置-> ...

  5. 网络装机pxe服务器的配置过程

    网络装机pxe服务器的配置过程 背景: 针对于Linux运维工作中遇到的需要大批量安装Linux系统的情况,通过网络装机的方式实现无人值守安装Linux操作系统,现需要配置一台pxe服务器用于pxe批 ...

  6. day01 包 权限修饰符 static final

  7. G - B-number

    #include<stdio.h> #include<string.h> using namespace std; typedef long long ll; ]; ][][] ...

  8. JVM加载类的原理机制

    在Java中,类装载器把一个类装入Java虚拟机中,要经过三个步骤来完成:装载.链接和初始化,其中链接又可以分成校验.准备.解析装载:查找和导入类或接口的二进制数据: 链接:执行下面的校验.准备和解析 ...

  9. IP服务-6-SNMP

    SNMP(简单网络管理协议) SNMP更为正式的说法是互联网标准管理框架(Internet Standard Management Framework).在这个协议架构中.被管理的设备(SNMP代理) ...

  10. java对mongodb数据库的简单操作

    准备工作: 下载好mongodriver.jar包(https://oss.sonatype.org/content/repositories/releases/org/mongodb/mongodb ...