#include<bits/stdc++.h>
using namespace std;
int b[55],n,na,i,j;
bool k[1005];
char a[1005][55];
int anyu(char a){
return a - 'A' + 1;
}
int main(){
cin >> n;
for(i = 1; i <= n; i++){
cin >> na;
for(j = 1; j <= na; j++){
cin >> a[i][j];
b[anyu(a[i][j])]++;
if(a[i][j - 1] != a[i][j] && b[anyu(a[i][j])] > 1){
k[i]++;
}
}
}
for(i = 1; i <= n; i++){
if(k[i]) cout<< "NO" << endl;
else cout<< "YES" << endl;
}
return 0;
}
看不懂题目的,我有翻译:
Polycarp有26项任务要做,每个任务都用大写字母表示。
老师要求他通过以下的方式解决他的任务:如果Polycarp开始解决一项任务,那么Polycarp在解决完这项任务前不能分心(即不能去做其他任务)! Polycarp一天能做一项任务,同时会写下他一天要做的任务。现在,老师想看看Polycarp是否做到了他要求的方式。
例如,Polycarp若按以下流程做任务:“DDBBCCCBBEZ”,则老师看到的是:Polycarp第一天开始做D任务,第三天开始做B任务,第五天开始做C任务,第八天又开始做B任务(即B任务还没做完,此时Polycarp分心了)……此外,会让老师怀疑的例子还有:“BAB”、“AABBCCDDEEBZZ”、和“ZZZZAZZZZ”等等。
如果Polycarp按以下流程做任务:“FFGZZZY”,则老师不会有任何怀疑(因为Polycarp没有分心)。【注意,Polycarp没有任何义务解决所有的任务!】此外,不会让老师怀疑的例子还有:“BA”、“AFFFCC”、和“YYYYY”。
请你帮忙确认一下老师会不会怀疑Polycarp。
第一行一个正整数t(1 <= t <= 1000),表示测试的组数。
接下来每一组测试数据的第一行一个正整数n(1 <= n <= 50),表示Polycarp解决任务的天数;
第二行为一个长度为n且由大写字母组成的字符串,表示Polycarp解决任务的顺序。
对于每组数据,输出:
1·如果老师不会怀疑Polycarp,输出“YES”;
2·如果会,则输出“NO”。
【(似乎)此处大小写不定!】