Polycarp Writes a String from Memory CodeForces - 1702B - 模拟,标记
Polycarp Writes a String from Memory CodeForces - 1702B
给定大小为 n 的字符串,至多每 3 种不同的字母分为一组,最少将字符串分为多少组?
Input
第一行输入数据包含一个整数 t(1≤t≤1e4)-测试用例的数量。
每个测试用例都包含一个非空字符串s,由小写拉丁字母组成(字符串s的长度不超过2e5)。
保证所有测试用例中的字符串长度s之和不超过2e5。
Output
对于每个测试用例,打印一个数字,从内存中写入字符串所需的最少天数。
Sample Input
6
lollipops
stringology
abracadabra
codeforces
test
f
Sample Output
2
4
3
4
1
1
分析
直接模拟,开个标记数组,记录是否出现过该元素 或者 set。
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const int N=1e6+10,INF=0x3f3f3f3f;
char a[N];
void slove2(){
int ans=1; set<char> st;
for(auto u : a){
st.insert(u);
if(st.size()==4) {
ans++, st.clear(), st.insert(u);
}
}
printf("%d\n", ans);
}
int main(){
// freopen("data.in", "r", stdin);
int t; scanf("%d", &t);
while(t--){
scanf("%s", a);
int n=strlen(a), vis[26]={0}, p=0, ans=0;
for(int i=0; i<n; i++){
if(!vis[a[i]-'a']) vis[a[i]-'a']=1, p++;
if(p%3==0){
ans++; int j=i+1;
while(j<n && vis[a[j]-'a']) j++;
if(j != i+1) i = j-1;
memset(vis, 0, sizeof(vis));
}
}
if(p%3!=0) ans++;
printf("%d\n", ans);
}
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)