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;
}
posted @ 2018-12-19 15:40  ChunhaoMo  阅读(386)  评论(0)    收藏  举报