D1. Great Vova Wall (Version 1)
阿新 • • 發佈:2018-12-19
連結
[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; }