B - Shuffle Hashing CodeForces - 1278A
思路
这一题利用求前缀和的思想和桶排的桶的思想的就能解决了
分析
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<map>
#include<vector>
#include<queue>
#include<stack>
void fre() { freopen("A.txt","r",stdin); freopen("Ans.txt","w",stdout); }
using namespace std;
const int mxn = 105;
map<int, int> mp;
char ar[mxn], br[mxn];
int cr[mxn][26];
int main()
{
/* fre(); */
int t;
scanf("%d", &t);
while(t --)
{
mp.clear();
scanf("%s %s", ar, br + 1);
int la = strlen(ar);
int lb = strlen(br + 1);
for(int i = 0; i < la; i ++)
mp[ar[i] - 'a'] ++;
for(int i = 1; i <= lb; i ++)
{
for(int j = 0; j < 26; j ++)
cr[i][j] = cr[i - 1][j];
cr[i][br[i] - 'a'] ++;
}
int flag;
for(int i = 1; i <= lb; i ++)
{
for(int j = 0; j < i; j ++)
{
flag = 1;
for(int k = 0; k < 26; k ++)
if(mp[k] != cr[i][k] - cr[j][k])
{
flag = 0;
break;
}
if(flag)
{
printf("YES\n");
break;
}
}
if(flag)
break;
}
if(! flag)
printf("NO\n");
}
return 0;
}