当前位置:网站首页>2022河南萌新联赛第(四)场:郑州轻工业大学 A - ZZULI
2022河南萌新联赛第(四)场:郑州轻工业大学 A - ZZULI
2022-08-02 04:31:00 【WA_自动机】
A - ZZULI
这道题由于要计算连通块大小,可以使用并查集,关键在于如何去合并。
对于 a , b , c a,b,c a,b,c , ( a , b ) (a,b) (a,b) 合并后 ( b , c ) (b,c) (b,c),与 ( a , b ) (a,b) (a,b) 合并 ( a , c ) (a,c) (a,c) 合并是没有区别的,那么要合并的一组数就用第一个去合并一遍。
所以拿第一个 Z 向后合并一遍,遇见 Z 、U 、L、 I 就合并;
再拿第一个 U 按照规则向后合并一遍,再拿第一个 L 按照规则向后合并一遍,再拿第一个 I 按照规则向后合并一遍即可
#include<bits/stdc++.h>
using namespace std;
const int N = 1000010;
char s[N];
int f[N],sz[N];
int d[4];
int find(int x)
{
return f[x]==x?x:f[x]=find(f[x]);
}
void merge(int x,int y)
{
x=find(x),y=find(y);
if(x==y) return;
f[x]=y,sz[y]+=sz[x];
}
int main()
{
unordered_map<char,int> mp;
mp['Z']=0,mp['U']=1,mp['L']=2,mp['I']=3;
cin>>(s+1);
int n=strlen(s+1);
for(int i=1;i<=n;i++) f[i]=i,sz[i]=1;
for(int i=1;i<=n;i++)
if(mp.count(s[i]))
{
int pos=mp[s[i]];
if(d[pos]==0) d[pos]=i;
else merge(d[pos],i);
for(int j=0;j<pos;j++)
if(d[j])
merge(d[j],i);
}
int ans=0;
for(int i=1;i<=n;i++)
ans=max(ans,sz[i]);
cout<<ans<<endl;
return 0;
}
边栏推荐
- Visual SLAM Lecture Fourteen - Lecture 13 Practice: Designing a SLAM system (the most detailed code debugging and running steps)
- (一)代码输出题 —— reverse
- 力扣练习——33 原子的数量
- 地牢大师(DAY 95)
- IOT物联网概述及应用层架构入门篇
- Crawler_crawl wasde monthly supply and demand balance table (example)
- 线代005
- 论文速读:Homography Loss for Monocular 3D Object Detection
- 1318_将ST link刷成jlink
- 质数路径(DAY 99)
猜你喜欢

How to decrypt worksheet protection in Excel

【C语言程序】求直角三角形边长

Deep blue college - handwritten VIO operations - the first chapter

redis基础入门

MES系统物料管理的五大功能,建议收藏

【数字IC手撕代码】Verilog固定优先级仲裁器|题目|原理|设计|仿真

斐波那契数列

Live | 7.30 ApacheCon Asia 2022 IOT/IIOT topic, IoTDB PMC Qiao Jialin as the producer

Camtasia 2022简体中文版屏幕录像和视频编辑软件

【STM32】ADC采集光敏数据(不看库函数手册进行配置)
随机推荐
从头开始实现YOLOV3
UE4 创建开始游戏界面UI
质数路径(DAY 99)
开放原子开源峰会落幕,百度超级链牵头成立XuperCore开源工作组
线代005
已更新 联通 电信 tiny模式
抓住那头牛(DAY 96)
ADSP21489工程中LDF文件配置详解
26. 如何判断一个对象是否存活?(或者GC对象的判定方法)?
UE4 3DUI显示与交互案例
Qt常见问题
找倍数(DAY 98)
【STM32】 ADC模数转换
棋盘问题(DAY 94)
【七夕】是时候展现专属于程序员的“浪漫”了
LeetCode 23: 合并K个升序链表
MySQL存储函数详解
gergovia的交易tijie
系统层面知识连接收藏
【C语言程序】求直角三角形边长