题意:
给你n个字符:
①
②
问你能不能构造出一个序列a,使得满足给定的字符串(环形)
分析:
因为是环形,而且这种传递是相互的,可以从前面传递到后面
所以就利用这一点,可以知道整个序列里面如果有一个N,就不可以,否则就是可以
理由:如果序列只有一个N,不论这个N放在什么地方,它的两边连起来都可以变成连续的一段,可以传递,所以这一段是一样的,因为是环形的,这个N必然也要传递下去,所以矛盾了,故不可以。如果序列里面有多个N,那就可以拆分成几段,每段不一样就可以了
思考:
为什么div2A我刚开始想的这么纠结....是最近写题少了吗....
多想一下题目的本质
代码:
#pragma GCC optimize(1)
#pragma GCC optimize(2)
#pragma GCC optimize(3,"Ofast","inline")
#define IOS ios::sync_with_stdio(false), cin.tie(0);
#include<iostream>
#include<map>
#include<set>
#include<cstdio>
#include<cstring>
#include<vector>
#include<stack>
#include<algorithm>
#include<cmath>
#include<queue>
#include<deque>
using namespace std;
#define int long long
typedef long long ll;
typedef pair<int,int> PAII;
const int N=2e6+10,M=5050,INF=1e18,mod=998244353;
signed main(){
IOS;
int T;
//T=1;
cin>>T;
while(T--)
{
string ch;
cin>>ch;
int cnt=0;
for(int i=0;i<ch.size();i++)
{
if(ch[i]=='N') cnt++;
}
if(cnt==1)
{
cout<<"NO\n";
continue;
}
cout<<"YES\n";
}
return 0;
}
/*
*/