Problem D 2016"百度之星" - 资格赛(Astar Round1)
2016-05-15 16:14
375 查看
Problem D
Accepts: 2346Submissions: 6884
Time Limit: 2000/1000 MS (Java/Others)
Memory Limit: 65536/65536 K (Java/Others)
Problem Description
度熊所居住的 D 国,是一个完全尊重人权的国度。以至于这个国家的所有人命名自己的名字都非常奇怪。一个人的名字由若干个字符组成,同样的,这些字符的全排列的结果中的每一个字符串,也都是这个人的名字。例如,如果一个人名字是 ACM,那么 AMC, CAM, MAC, MCA, 等也都是这个人的名字。在这个国家中,没有两个名字相同的人。
度熊想统计这个国家的人口数量,请帮助度熊设计一个程序,用来统计每一个人在之前被统计过多少次。
Input
这里包括一组测试数据,第一行包含一个正整数NN,接下来的NN 行代表了 NN 个名字。NN 不会超过100,000100,000,他们的名字不会超过40位.
Output
对于每输入的一个人名,输出一个整数,代表这个人之前被统计了多少次。
Sample Input
Copy
5 ACM MAC BBA ACM BAB
Sample Output
0 1 0 2 1
Statistic | Submit | Clarifications | Back
这道题很简单了 对字符串排序 计算次数 就行了使用map
cin输入好像特浪费时间 最好用scanf 我用cin 998ms......
#include <stdio.h> #include <algorithm> #include <iostream> #include <map> using namespace std; int main() { int n; while(~scanf("%d",&n)) { map<string,int>mp; string str; for(int i=0;i<n;i++) { cin>>str; sort(str.begin(),str.end(),less<char>() ); cout<<mp[str]<<endl; mp[str]++; } } return 0; }468ms
#include <stdio.h> #include <algorithm> #include <iostream> #include <string.h> #include <map> using namespace std; int main() { int n; while(~scanf("%d",&n)) { map<string,int>mp; char str[100]; for(int i=0;i<n;i++) { //cin>>str; scanf("%s",str); int len=strlen(str); sort(str,str+len); printf("%d\n",mp[str]); mp[str]++; } } return 0; }
相关文章推荐
- 软件开发过程-软件过程
- Android 小分享 按两次回退退出软件
- 记录一下
- Android项目之简单计算器
- 第九周上机实践项目1(3):深复制体验
- 如何实现基于ssh框架的投票系统的的质量属性
- 定位迭代器的中间位置
- Ex2010-06 Get version number, build number
- windows下nginx安装、配置与使用
- Problem C (字典树的查找删除和插入)2016"百度之星" - 资格赛(Astar Round1)
- 数据库事务
- iOS下拉悬浮窗,有选中状态
- ECMAScript 6 notebook
- Solr 删除和新增 index
- llinux企业常用服务---squit透明代理
- CB的bug
- 第十二周项目 数组类运算的实现
- Java面向对象之封装
- Linux中fork,vfork和clone详解(区别与联系)
- 知道后续遍历和中序遍历还原二叉树并求层析遍历