Codeforces 1092D1. Great Vova Wall (Version 1)

Codeforces 1092D1. Great Vova Wall (Version 1)

传送门:https://codeforces.com/problemset/problem/1092/D1

题目大意:
我们需要判断是否可以,对一组数进行处理,通过对任意相邻且相等两数同时加一或对任意一个数加二,使得这些数的值都相同。

主要想法:
首先,因为只对一个数的操作不会改变它的奇偶性,但可以让它不断增加,所以我们只要考虑奇偶性即可。而对两个数的操作可以改变奇偶性,但它要求相邻两数的大小一致也就是奇偶性一致。
然后,我们开始考虑什么情况能够成立,就是当数组为 x x 型或x( )x、 ()x x型的嵌套的时候可以成立,看到这个,我们可以很容易联想到那个括号合法性的问题这两个问题其实本质上是一样的,都可以直接用栈解决。

	代码实现:
#include <bits/stdc++.h>

using namespace std;
stack<int>a;

int main()
{
    int n;
    cin>>n;
    for(int i=0;i<n;i++)
    {
        int b;
        cin>>b;
        if((!a.empty())&&0==(b+a.top())%2)a.pop();
        else a.push(b);
    }
    if(a.size()>1)cout<<"NO"<<endl;
    else cout<<"YES"<<endl;
    return 0;
}

附带括号题的解法地址:https://blog.csdn.net/ydfy_/article/details/97113340

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值