2022春每日一题:Day 14
2024-10-21 03:43:28
题目:字符串归类
发现字符串长度总数不大,因此把每个字符串有的字母分离,存放到桶中,再枚举合并即可,时间复杂度O(len)
赛时代码:
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <algorithm>
const int N=2e5+5;
using namespace std;
int n,fa[N],cnt[N],t[30],tt[30][N],ret;
char s[N][55];
int find(int x)
{
if(x==fa[x])
return x;
return fa[x]=find(fa[x]);
}
bool merge(int x,int y)
{
int r1=find(x),r2=find(y);
if(r1==r2)
return 0;
fa[r1]=r2;
return 1;
}
int main()
{
scanf("%d",&n);
ret=n;
for(int i=1;i<=n;i++)
{
fa[i]=i;
scanf("%s",s[i]+1);
int m=strlen(s[i]+1);
memset(t,0,sizeof(t));
for(int j=1;j<=m;j++)
if(!t[s[i][j]-'a'])
t[s[i][j]-'a']=1,tt[s[i][j]-'a'][++cnt[s[i][j]-'a']]=i;
}
for(int i=0;i<26;i++)
for(int j=2;j<=cnt[i];j++)
if(merge(tt[i][j],tt[i][j-1]))
ret--;
printf("%d\n",ret);
return 0;
}
最新文章
- Object.assign方法复制或合并对象
- TableView遇到的问题
- win10 mysql 5.7.13 服务无法启动 3534
- FastSocket.Net
- Struts 2 拦截器
- PHP生成图片验证码demo【OOP面向对象版本】
- Flex ObjectHandles 构建绘图程序!
- python模块与包
- [每日一题] 11gOCP 1z0-052 :2013-09-1 RMAN-- repair failure........................................A20
- 《Linux命令行与shell脚本编程大全》 第十四章 学习笔记
- sql: PL/SQL proc
- What is the difference between JRE,JVM and JDK?
- Memcached源码分析之从SET命令开始说起
- ubuntu ssh 免密码登录
- C# 求链表 list 中 属性的 最大值 最小值
- jQuery中live函数的替代-【jQuery】
- HTML5:定位
- 《Two Dozen Short Lessons in Haskell》所有习题的索引
- CMake 示例
- 图灵数学&#183;统计学丛书.PDF(53本全)
热门文章
- Android序列化的几种实现方式
- React报错之Rendered more hooks than during the previous render
- STC15 串口通信
- KingbaseES V8R6集群外部备份案例
- 学习ASP.NET Core Blazor编程系列二——第一个Blazor应用程序(完)
- salesforce零基础学习(一百一十七)salesforce部署方式及适用场景
- TortoiseSVN 执行清理( cleanUp )失败的解决方案
- winform,水晶报表制作
- 邮箱的代理发送Send as权限不生效
- Java SE note1