专栏文章
题解:P14317 「ALFR Round 11」A 浴眼盯真 (dingzhen)
P14317题解参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @min1vsqu
- 此快照首次捕获于
- 2025/12/01 19:12 3 个月前
- 此快照最后确认于
- 2025/12/01 19:12 3 个月前
首先用桶排序统计 26 个小写字母的出现次数。如果有任意一个字母未出现(出现次数为 0),则条件一不成立,条件二也会自然而然不成立。
如果该字符串的第一个字母和最后一个字母均为特有(即出现次数均为 1),则条件二不成立。(理由:该字符串中最大的两个子串,是 “去掉首字母的子串” 和 “去掉尾字母的子串”;若首字母和尾字母均为特有,那么这两个最大子串会缺少对应的特有字母,无法满足条件一,其余更小的子串自然也无法满足条件一,因此条件二不成立。)
若条件一和条件二均满足,则输出 yes;否则输出 no,并说明缺乏的条件(条件一不成立时,需同时指出缺乏条件 1 和 2;仅条件二不成立时,只需指出缺乏条件 2)
CPP#include <iostream>
#include <cstring>
bool tiaojianyi(int a[]){
for(int i=0;i<26;i++)if(a[i]==0)return false;
return true;
}
int ct[26];
int main(){
int t;
std::cin>>t;
while(t--){
std::string s;
std::cin>>s;
int n=s.size();
bool c1=0,c2=1;
for(int i=0;i<n;i++)ct[s[i]-'a']++;
c1=tiaojianyi(ct);
if(c1)if(ct[s[0]-'a']==1&&ct[s[n-1]-'a']==1)c2=0;
if(c1&&c2)std::cout<<"Yes\n";
else{
std::cout<<"No\n";
if(!c1)std::cout<<"1 2\n";
else std::cout<<"2\n";
}
}
return 0;
}
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...