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. js 拦截 窗体关闭事件

    <script type="text/javascript">   <!--         window.onbeforeunload = onbeforeun ...

  2. Levko and Array

    题意: 有一长度为n的正整数序列,你可以选择K个数字任意改变它,使得$max \{ a(i+1) - a(i) \} $ 最小,求最小值. 解法: 1.$O(n^2log(MAX_A) )$,考虑二分 ...

  3. hdu-1597

    find the nth digit Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Other ...

  4. E - Jolly Jumpers

    E - Jolly Jumpers Time Limit:3000MS     Memory Limit:0KB     64bit IO Format:%lld & %llu Submit  ...

  5. c/c++面试12-18------关与sizeof那些事儿

    12 使用sizeof计算普通变量所占空间大小 (1)不同数据类型所占字节数不同(32位 64位系统不同) int----->4 double----->8 char-------> ...

  6. 20个Flutter实例视频教程-01节底部导航栏和切换效果的制作-1

    视频地址: https://www.bilibili.com/video/av39709290?zw 博客地址: https://jspang.com/post/flutterDemo.html#to ...

  7. Flutter实战视频-移动电商-39.路由_Fluro的路由配置和静态化

    39.路由_Fluro的路由配置和静态化 handler只是单个路由的配置,这节课我们要学习路由的整体配置 整体配置 新建routers.dart文件来做整体配置 detailsHandler就是我们 ...

  8. 《剑指offer》面试题16—反转链表

    Node* p1  p2  p3 思路:开始时,p1为NULL,p2=phead,p3=p2—>next.使p2—>next = p1,然后使p1=p2,p2=p3.如果只有1个结点则此时 ...

  9. js点击复制某段文本方法

    百度很多说这个方法 window.clipboardData.setData ("Text", "demo"); 实践证明只有ie支持. 改成下面这个方式来复制 ...

  10. bzoj 4032: [HEOI2015]最短不公共子串【dp+SAM】

    第一.二问: 就是最小的最长公共长度+1,设f[i][j]为a匹配到i,b匹配到j,第一问的转移是f[i][j]=(a[i]==b[j]?f[i-1][j-1]+1:0),第二问的转移是f[i][j] ...