D1. Great Vova Wall (Version 1)

链接

[https://codeforces.com/contest/1092/problem/D1]

题意

给你n个位置墙的高度,现在你有2×1 砖块,你可以竖直或者水平放置
问你是否可以使得所有位置高度一样

思路

都在代码里,看了你就恍然大悟了。。。仔细想想

代码

#include<bits/stdc++.h>
using namespace std;
int main(){
    int n,h;
    ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
    //freopen("in.txt","r",stdin); 
    while(~scanf("%d",&n)){
        stack<int> stk;
        scanf("%d",&h);
        stk.push(h);
        for(int i=2;i<=n;i++)
        {
            scanf("%d",&h);
            if(stk.size()&&(h-stk.top())%2==0){//这里很关键,因为对于相差2的倍数,
            //肯定是可以填砖使得二者高度相等,相等就可以去掉这两个位置 
            //因为后面出现的位置总可以填砖使得与二者高度相等,
            //比如 554,先变成664,再变成666
            //或者338,直接加5块砖变为888。。。 
                stk.pop();
            }
            else stk.push(h);
        }
        if(stk.size()<=1) printf("YES\n");
        else printf("NO\n");
    }
    return  0;
}

猜你喜欢

转载自www.cnblogs.com/mch5201314/p/10143674.html
今日推荐