A. Equal or Not Equal edu199 div2

Problem - A - Codeforces

题意:

给你n个字符:

if(ch[i]=='N')   a[i-1]!=a[i]

if(ch[i]=='E')   a[i-1]==a[i]

问你能不能构造出一个序列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;
} 
/*

*/ 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值