小A的游戏
㛃䣠䇁艣(解题思路)
来想想,什么情况下你猜不出来删除的东西具体是那些?如果删除了一堆东西和另一堆东西后都剩下相同的东西,那么不就两眼一抹黑,螺旋升天了吗?
所以只需要判断一下相同的字母出现的位置是否大于
k
k
k就好了。
code
#include<iostream>
#include<cstdio>
#include<string>
#include<cstring>
using namespace std;
int T;
string a;
int b;
int t[30][110],tot[30];
int main()
{
cin>>T;
while(T--)
{
memset(tot,0,sizeof(tot));
cin>>a>>b;
int ok=0,n=a.size();
if(b>=n)
{
cout<<"Certain"<<endl;
continue;
}
for(int i=0;i<n;i++)
t[a[i]-'a'][++tot[a[i]-'a']]=i;
for(int i=0;i<26;i++)
{
ok=0;
for(int j=1;j<tot[i];j++)
if(t[i][j+1]-t[i][j]<=b||t[i][j+1]-t[i][j]==1)
{
ok=1;
break;
}
if(ok)
break;
}
if(ok)
cout<<"Uncertain"<<endl;
else
cout<<"Certain"<<endl;
}
}