1. 程式人生 > >D1. Great Vova Wall (Version 1) (思維)

D1. Great Vova Wall (Version 1) (思維)

題目連結:https://codeforces.com/contest/1092/problem/D1

題意:給你n個ai,ai表示第i堵牆的高度,現在都一個1*2的磚頭,問:能否把這片牆砌成高度一直的牆?

題解:一般問你YES or NO 的問題,就不用想太複雜,直接推理一下就好。

這裡我們可以這樣想,相鄰的兩塊初始牆的高度假如是2的倍數,那麼這兩塊牆一定能砌成相同的高度,故我們可以把這兩塊牆移掉,因為不會影響後面的結果。

 

程式碼:

#include<cstdio>
#include<algorithm>
#include<cstring>
#include<stack>

using namespace std;

stack<int> sta;

int main()
{
    int n;

    while(~scanf("%d",&n))
    {
            while(!sta.empty())
                sta.pop();

            for(int i=1;i<=n;i++)
            {
                int x;
                scanf("%d",&x);

                ///相鄰為2的倍數,移除
                if(sta.size()&&(x-sta.top())%2==0)
                    sta.pop();
                else sta.push(x);
            }

            if(sta.size()<=1) puts("YES");
            else puts("NO");
    }
    return 0;
}