zoukankan      html  css  js  c++  java
  • LibreOJ 2612 花匠

    题目链接:LibreOJ 2612 花匠

    题目大意:

    题解:
    本题是求最长抖动子序列。
    (dp[i][0/1])表示判断到第(i)位且第(i)位为下降/上升结尾的情况下最长抖动序列的长度。

    分以下三种情况讨论:

    1. (h[i]=h[i-1]),则第(i)位可以替换掉第(i-1)位;
    2. (h[i]>h[i-1]),则第(i)位为下降结尾的情况可以继承第(i-1)位为下降结尾的情况,因为在第(i)位之后只有比第(i)位大的以上升结尾的序列才会用到第(i)位以下降结尾的序列,又因为(h[i]>h[i-1]),则其一定比第(i-1)位大,可以放在第(i-1)位下降结尾的序列后;
      (i)位为上升结尾的情况可分为两种:
      (1) 第(i)位可以替换掉第(i-1)位继承其上升结尾的情况;
      (2) 第(i)位可以放在第(i-1)位下降结尾的序列后,序列长度加一;
    3. (h[i]<h[i-1]),则第(i)位为上升结尾的情况可以继承第(i-1)位为上升结尾的情况,因为在第(i)位之后只有比第(i)位小的以下降结尾的序列才会用到第(i)位以上升结尾的序列,又因为(h[i]<h[i-1]),则其一定比第(i-1)位小,可以放在第(i-1)位上升结尾的序列后;
      (i)位为下降结尾的情况可分为两种:
      (1) 第(i)位可以替换掉第(i-1)位继承其下降结尾的情况;
      (2) 第(i)位可以放在第(i-1)位上升结尾的序列后,序列长度加一。

    状态转移方程为:

    [left{egin{aligned}dp[i][0]=dp[i-1][0]\dp[i][1]=dp[i-1][1]end{aligned} ight.,h[i]=h[i-1] ]

    [left{egin{aligned}dp[i][0]&=dp[i-1][0]\dp[i][1]&=max{dp[i-1][1],dp[i-1][0] + 1}end{aligned} ight.,h[i]>h[i-1] ]

    [left{egin{aligned}dp[i][0]&=max{dp[i-1][0],dp[i-1][1]+1}\dp[i][1]&=dp[i-1][1]end{aligned} ight.,h[i]<h[i-1] ]

    #include <iostream>
    using namespace std;
    
    int h[2000010], n, dp[2000010][2];
    
    int main() {
        cin >> n;
        for (int i = 1; i <= n; ++i) {
            cin >> h[i];
        }
        dp[1][0] = dp[1][1] = 1;
        for (int i = 2; i <= n; ++i) {
            dp[i][0] = dp[i - 1][0], dp[i][1] = dp[i - 1][1];
            if (h[i] > h[i - 1]) {
                dp[i][1] = max(dp[i][1], dp[i - 1][0] + 1);
            }
            if (h[i] < h[i - 1]) {
                dp[i][0] = max(dp[i][0], dp[i - 1][1] + 1);
            }
        }
        cout << max(dp[n][0], dp[n][1]);
        return 0;
    }
    
  • 相关阅读:
    38861cba61c66739c1452c3a71e39852.ttf net::ERR_ABORTED 404 (Not Found)
    php 进制转换base_convert
    mysql find_in_set 函数 使用方法
    xmind 破解
    python 获取 一个正整数的二进制
    算法 求一个数的平方根
    详细的描述一个测试活动完整的过程。
    常见的测试用例设计方法都有哪些?请分别以具体的例子来说明这些方法在测试用例设计工作中的应用。
    HTTP 协议中 Vary 的一些研究
    svn cleanup failed–previous operation has not finished; run cleanup if it was interrupted
  • 原文地址:https://www.cnblogs.com/IzumiSagiri/p/15063872.html
Copyright © 2011-2022 走看看