专栏文章
题解:P14317 「ALFR Round 11」A 浴眼盯真 (dingzhen)
P14317题解参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @min2b7az
- 此快照首次捕获于
- 2025/12/01 19:24 3 个月前
- 此快照最后确认于
- 2025/12/01 19:24 3 个月前
全体目光向我看齐,我这思路完美的不行
首先,,难道是二分,线段树,树状数组!!!一看难度,搞错了再来……
由题可得(怎么这么像数学试卷上的偷空减料),若一个字符串满足条件2必定满足条件1,不满足条件1必定不满足条件2(这不废话吗),由此:
1.用数组记录每个字母出现的次数,若26个字母无空缺且字符串首字母或尾字母出现次数大于1则Yes(不包括首或尾字母时不满足条件1,则所有子串必定都无法满足条件1)
2.剩余情况都No,26个字母有空缺条件1,2都不满足,否则只不满足条件2
完美代码如下
CPP#include<bits/stdc++.h>
#define int long long//好习惯
using namespace std;
int t,l,r,len,cnt,num[30];string s;
signed main()
{
ios::sync_with_stdio(false);
cin.tie(0);cout.tie(0);//关闭同步流(可不加)
cin>>t;
while(t--)
{
for(int i=0;i<30;i++)
num[i]=0;
cnt=0;//多测不清空,爆零两行泪
cin>>s;len=s.size();
s=' '+s;//个人习惯
for(int i=1;i<=len;i++)
{
if(num[s[i]-'a']==0)
cnt++;//统计
num[s[i]-'a']++;
}
if(cnt>=26&&(num[s[1]-'a']>1||num[s[len]-'a']>1))
cout<<"Yes\n";
else
{
cout<<"No\n";
if(cnt<26)cout<<"1 2";
else cout<<"2 ";
cout<<'\n';//悄悄告诉你,cout<<endl有点慢
}
}
return 0;
}
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...