清北学堂模拟赛d3t1 a
2024-08-28 00:46:55
【问题描述】
你是能看到第一题的friends呢。
——hja
怎么快速记单词呢?也许把单词分类再记单词是个不错的选择。何大爷给出了一种分单词的方法,何大爷认为两个单词是同一类的当这两个单词的各个字母的个数是一样的,如dog和god。现在何大爷给了你 个单词,问这里总共有多少类单词。
【输入格式】
第一行一个整数N 代表单词的个数。
接下来 N行每行一个单词。
【输出格式】
一行一个整数代表答案。
【样例输入】
3
AABAC
CBAAA
AAABB
【样例输出】
2
【数据范围与规定】
分析:双Hash会被卡,毒瘤......把hash换成map就过了.把每个串各个字符的数量算出来,丢到map里,看之前有没有出现过就可以了.因为是结构体+map,所以需要重载<号.
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <map> using namespace std; int n,len,ans; struct node
{
int cnt[];
node()
{
memset(cnt, , sizeof(cnt));;
}
bool operator<(const node &a)const
{
for (int b = ; b <= ; b++)
if (cnt[b] != a.cnt[b]) return cnt[b]<a.cnt[b];
return false;
}
}; char s[];
map<node, bool> m; int main()
{
scanf("%d", &n);
for (int i = ; i <= n; i++)
{
scanf("%s", s + );
len = strlen(s + );
node temp;
for (int i = ; i <= len; i++)
temp.cnt[s[i] - 'A' + ]++;
if (!m[temp])
{
m[temp] = true;
ans++;
}
}
printf("%d\n", ans); return ;
}
最新文章
- squid 2.7 通过域名反向代理多个服务器的配置方法
- Mysql 服务无法启动 1067
- C#知识体系(二)用案例来理解委托与事件
- C#中的多线程 - 基础知识
- excel具有制作甘特图的功能
- JavaScript Array(数组)对象
- php大力力 [033节] 随便看看:PHP程序员学习C++
- HDU2521反素数
- 201521123034《java程序设计》第2周学习总结
- linux下编译protobuf
- final发布用户使用报告
- Oracle去除重复(某一列的值重复),取最新(日期字段最新)的一条数据
- Django 系列博客(二)
- .NET 常用ORM之iBatis
- ztree异步加载树节点
- os.environ() 说明
- 使用Visual Studio Code开发Asp.Net Core WebApi学习笔记(一)-- 起步
- C语言的参数传递
- 魅力python------if - else 语句
- flex属性设置详解
热门文章
- POJ 1635 Subway tree systems 有根树的同构
- codeforces round #414 div1+div2
- [Swift通天遁地]九、拔剑吧-(17)创建一个三维折叠样式的页面展开效果
- RAP接口文档的安装
- Aspose Cells dll 实现数据简单下载
- MFC学习篇(一):用OpenCV显示视频
- Codeforces 903G 巧妙的线段树
- easyui textbox 内容改变事件 增加oninpu 类似事件,
- Mac下CUDA开启及Tensorflow-gpu 1.4 安装
- Android传递中文参数方法(之一)