链接
[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;
}