题目链接:点击打开链接
题目大意:略。
解题思路:略。
AC代码
方法一:
#include<bits/stdc++.h>
#include<cmath>
#define mem(a,b) memset(a,b,sizeof a);
#define INF 0x3f3f3f3f
using namespace std;
typedef long long ll;
map<char,int> m;
int main()
{
int T,p,t;
scanf("%d",&T);
string s;
while(T-- && cin>>s)
{
m.clear();
int len=s.length();
for(int j=0;j<len;j++)
{
m[s[j]]++;
if(s[j]=='P')
p=j;
if(s[j]=='T')
t=j;
}
if(m['P'] == 1 && m['A'] != 0 && m['T'] == 1 && m.size() == 3 && p * (t-p-1) == s.length()-t-1)
printf("YES\n");
else
printf("NO\n");
}
return 0;
}
方法二:
#include<bits/stdc++.h>
#include<cmath>
#define mem(a,b) memset(a,b,sizeof a);
#define INF 0x3f3f3f3f
using namespace std;
typedef long long ll;
int main()
{
int n;
while(~scanf("%d",&n))
{
string s; cin>>s;
int len=s.length();
int preA, midA, postA, f=1, p, t, pid, tid;
p=t=0;
char c;
for(int i=0;i<len;i++)
{
c=s[i];
if(c!='A' && c!='P' && c!='T'){f=-1; break;}
if(c=='P') p++, pid=i;
else if(c=='T') t++, tid=i;
}
if(f==-1 || p!=1 || t!=1 || len<3 || pid>tid) puts("NO");
else
{
preA=pid;
midA=tid-pid-1;
postA=len-tid-1; // PAT 012
if(midA==1) puts(preA==postA?"YES":"NO");
else puts(postA==preA*midA?"YES":"NO");
}
}
return 0;
}