【2015-2016 ACM-ICPC, NEERC, Southern Subregional Contest A】【模拟 STL-map】Email Aliases 不同邮箱的数量
来源:互联网 发布:javascript面向对象 编辑:程序博客网 时间:2024/06/05 07:55
#include<stdio.h>#include<iostream>#include<string.h>#include<string>#include<ctype.h>#include<vector>#include<map>using namespace std;const int N=2e4+10;char bmail[]={"bmail.com"};char s[105],S[105];map<string,int>mop;map<string,int>::iterator it;int n;int num[N];vector<string>a[N];int main(){ while(~scanf("%d",&n)) { mop.clear(); int id=0; for(int i=1;i<=n;i++) { scanf("%s",s); strcpy(S,s);//转小写,记域名位置 int st; for(int j=0;s[j];j++) { s[j]=tolower(s[j]); if(s[j]=='@')st=j; }//如果是bmail要做特殊转化 if(strcmp(s+st+1,bmail)==0) { int l=0; for(int j=0;j<st;j++) { if(s[j]=='.')continue; if(s[j]=='+')break; s[l++]=s[j]; }for(int j=st;s[j];j++)s[l++]=s[j]; s[l]=0; }//存进map中 if(mop.find(s)==mop.end())mop[s]=++id; int o=mop[s]; ++num[o]; a[o].push_back(S); } printf("%d\n",id); for(int i=1;i<=id;i++) { cout<<num[i]; for(int j=0;j<a[i].size();j++)cout<<" "<<a[i][j]; puts(""); num[i]=0; a[i].clear(); } } return 0;}/*【trick&&吐槽】我竟然没有输出不同邮箱的个数,导致WA一发,以后可不能这么粗心了!【题意】对于所有的邮箱,都是由login@domain这样的形式构成,而且字符都是不区分大小写的。我们有一种特殊类型的邮箱——@bmail.com,这种邮箱除了不区分大小写外——1,'@'之前的'.',有等同于无2,'@'之前的第一个'+'之后的字符可以忽略不计然后其他字符相同的被认定为邮箱相同。现在给你n(2e4)个邮箱,让你输出每个邮箱出现的次数与所有这个邮箱的原始串。【类型】map【分析】1,因为不分带小写,所以我们可以强制把字符串都转化为小写。2,然后要检测域名是否为@bmail.com,如果是,则忽略所有'.',然后再忽略第一个'+'之后的用户名然后这个邮箱再丢到map中,用来映射一个编号。这个编号对应着(频度,各个原始串)。【时间复杂度&&优化】O(nlogn)*/
3 0
- 【2015-2016 ACM-ICPC, NEERC, Southern Subregional Contest A】【模拟 STL-map】Email Aliases 不同邮箱的数量
- 2015-2016 ACM-ICPC, NEERC, Southern Subregional Contest A Email Aliases
- Codeforces 2015-2016 ACM-ICPC, NEERC, Southern Subregional Contest A题 (String模拟)
- 2015-2016 ACM-ICPC, NEERC, Southern Subregional Contest
- Codeforces 2015-2016 ACM-ICPC, NEERC, Southern Subregional Contest I题(模拟)
- 2016-2017 ACM-ICPC, NEERC, Southern Subregional Contest
- 2016-2017 ACM-ICPC, NEERC, Southern Subregional Contest J Bottles
- 2016-2017 ACM-ICPC, NEERC, Southern Subregional Contest J dp
- 2015-2016 ACM-ICPC, NEERC, Southern Subregional Contest (Online Mirror, ACM-ICPC Rules, Teams Prefer
- 2014-2015 ACM-ICPC, NEERC, Southern Subregional Contest D - Data Center 模拟
- 【2015-2016 ACM-ICPC, NEERC, Southern Subregional Contest F】【贪心+ STL-优先队列】 Gourmet and Banquet 最大活动时间
- 【2015-2016 ACM-ICPC, NEERC, Southern Subregional Contest J】【暴力模拟】Cleaner Robot 机器人行走 决策固定
- 【2015-2016 ACM-ICPC, NEERC, Southern Subregional Contest D】【模拟 讨论】Boulevard 人流行走看是否相交 beautiful code
- 2016-2017 ACM-ICPC, NEERC, Southern Subregional Contest A. Toda 2
- 2016-2017 ACM-ICPC, NEERC, Southern Subregional Contest A Toda2 贪心
- 2015-2016 ACM-ICPC, NEERC, Moscow Subregional Contest A
- 2015-2016 ACM-ICPC, NEERC, Southern Subregional Contest F - Infinite Go
- 2015-2016 ACM-ICPC, NEERC, Southern Subregional Contest B - Stealing Harry Potter's Precious
- C语言枚举类型
- oc一天学习
- 【2015-2016 ACM-ICPC, NEERC, Southern Subregional Contest B】【暴力双排序】Layer Cake 若干矩形 选择相同长和宽的最大体积
- Mac下激活Navicat Premium 11.1.15
- 汇编语言 冒泡排序
- 【2015-2016 ACM-ICPC, NEERC, Southern Subregional Contest A】【模拟 STL-map】Email Aliases 不同邮箱的数量
- 第十周项目3利用二叉树遍历思想解决问题
- 获取外置的SD卡
- HDU 5510 Bazinga (2015沈阳站B题&&KMP)
- 小工具使用 - 用putty\pscp从win8往ubuntu上传文件
- POJ-2575(用例能过,但一直WA)
- Chrome内核解析:GraphicsContext之间的同步
- 2015河南科技学院高校CSDN俱乐部--word操作讲解
- python 基础心得