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