• CF1092D2 Great Vova Wall (Version 2)


    相邻两个是相等高度的才能达到任意高度,像 1221 这种也不行。如果最后剩下一个未匹配成功的,那么一定要是最高的。(因为只能横着放)

    那么用栈维护一下就好了。

    #include <bits/stdc++.h>
    #define reg register
    #define ll long long
    #define ull unsigned long long
    #define db double
    #define pi pair<int, int>
    #define pl pair<ll, ll>
    #define vi vector<int>
    #define vl vector<ll>
    #define vpi vector<pi>
    #define vpl vector<pl>
    #define pb push_back
    #define er erase
    #define SZ(x) (int) x.size()
    #define lb lower_bound
    #define ub upper_bound
    #define all(x) x.begin(), x.end()
    #define rall(x) x.rbegin(), x.rend()
    #define mkp make_pair
    #define ms(data_name) memset(data_name, 0, sizeof(data_name))
    #define msn(data_name, num) memset(data_name, num, sizeof(data_name))
    #define For(i, j) for(reg int (i) = 1; (i) <= (j); ++(i))
    #define For0(i, j) for(reg int (i) = 0; (i) < (j); ++(i))
    #define Forx(i, j, k) for(reg int (i) = (j); (i) <= (k); ++(i))
    #define Forstep(i , j, k, st) for(reg int (i) = (j); (i) <= (k); (i) += (st))
    #define fOR(i, j) for(reg int (i) = (j); (i) >= 1; (i)--)
    #define fOR0(i, j) for(reg int (i) = (j) - 1; (i) >= 0; (i)--)
    #define fORx(i, j, k) for(reg int (i) = (k); (i) >= (j); (i)--)
    #define tour(i, u) for(reg int (i) = head[(u)]; (i) != -1; (i) = nxt[(i)])
    using namespace std;
    char ch, B[1 << 20], *S = B, *T = B;
    #define getc() (S == T && (T = (S = B) + fread(B, 1, 1 << 20, stdin), S == T) ? 0 : *S++)
    #define isd(c) (c >= '0' && c <= '9')
    int rdint() {
      int aa, bb;
      while(ch = getc(), !isd(ch) && ch != '-');
      ch == '-' ? aa = bb = 0 : (aa = ch - '0', bb = 1);
      while(ch = getc(), isd(ch))
        aa = aa * 10 + ch - '0';
      return bb ? aa : -aa;
    }
    ll rdll() {
      ll aa, bb;
      while(ch = getc(), !isd(ch) && ch != '-');
      ch == '-' ? aa = bb = 0 : (aa = ch - '0', bb = 1);
      while(ch = getc(), isd(ch))
        aa = aa * 10 + ch - '0';
      return bb ? aa : -aa;
    }
    const int mod = 998244353;
    // const int mod = 1e9 + 7;
    struct mod_t {
      static int norm(int x) {
        return x + (x >> 31 & mod);
      }
      int x;
      mod_t() {  }
      mod_t(int v) : x(v) {  }
      mod_t(ll v) : x(v) {  }
      mod_t(char v) : x(v) {  }
      mod_t operator +(const mod_t &rhs) const {
        return norm(x + rhs.x - mod);
      }
      mod_t operator -(const mod_t &rhs) const {
        return norm(x - rhs.x);
      }
      mod_t operator *(const mod_t &rhs) const {
        return (ll) x * rhs.x % mod;
      }
    };
    const int MAXN = 2e5 + 10;
    int n, a[MAXN], stk[MAXN], top = 0;
    inline void work() {
      n = rdint();
      int mx = 0;
      For(i, n) {
        a[i] = rdint();
        mx = max(mx, a[i]);
      }
      bool flag = 0;
      For(i, n) {
        if(top != 0 && stk[top] == a[i])
          top--;
        else if(top != 0 && stk[top] < a[i])
          flag = 1;
        else
          stk[++top] = a[i];
      }
      if(!flag && (top == 0 || top == 1 && stk[top] == mx))
        printf("YES
    ");
      else
        printf("NO
    ");
    }
    int main() {
      // freopen("input.txt", "r", stdin);
      work();
      return 0;
    }
    
  • 相关阅读:
    Eclipse用法和技巧二十六:浅谈快捷键
    Eclipse用法和技巧二十五:eclipse图标的含义
    Eclipse用法和技巧二十四:当git遇上eclipse
    Eclipse用法和技巧二十三:查看JDK源码
    Eclipse用法和技巧二十二:快速调整字体大小
    Eclipse用法和技巧二十一:工程的展示途径
    94. Binary Tree Inorder Traversal
    110. Balanced Binary Tree
    595. Big Countries
    720. Longest Word in Dictionary(important!!!about sort)
  • 原文地址:https://www.cnblogs.com/Lonely-233/p/13659189.html
Copyright © 2020-2023  润新知