• 1272 最大距离 只想到了dp


    http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1272

    离散化后,用dp[i]表示向右,大于等于i这个数字的最大位置

    dp[i] = max(dp[i + 1], dp[i])

    #include <cstdio>
    #include <cstdlib>
    #include <cstring>
    #include <cmath>
    #include <algorithm>
    #include <assert.h>
    #define IOS ios::sync_with_stdio(false)
    using namespace std;
    #define inf (0x3f3f3f3f)
    typedef long long int LL;
    
    
    #include <iostream>
    #include <sstream>
    #include <vector>
    #include <set>
    #include <map>
    #include <queue>
    #include <string>
    #include <bitset>
    const int maxn = 50000 + 20;
    int a[maxn], dp[maxn], id[maxn];
    int n;
    vector<int>da;
    void work() {
        scanf("%d", &n);
        int top = 0;
        da.push_back(0);
        for (int i = 1; i <= n; ++i) {
            scanf("%d", &a[i]);
            da.push_back(a[i]);
        }
        sort(da.begin(), da.end());
        for (int i = 1; i <= n; ++i) {
            id[i] = lower_bound(da.begin(), da.end(), a[i]) - da.begin();
        }
        for (int i = n; i >= 1; --i) {
            dp[id[i]] = max(dp[id[i]], i);
        }
    //    for (int i = 1; i <= n; ++i) {
    //        cout << id[i] << " ";
    //    }
        for (int i = n; i >= 1; --i) {
            dp[i] = max(dp[i], dp[i + 1]);
        }
        int ans = 0;
        for (int i = 1; i <= n; ++i) {
            ans = max(ans, dp[id[i]] - i);
        }
        cout << ans << endl;
    }
    
    int main() {
    #ifdef local
        freopen("data.txt", "r", stdin);
    //    freopen("data.txt", "w", stdout);
    #endif
        work();
        return 0;
    }
    View Code

    然后这题排个序,然后记录下最小的id就好。

    把思维转过来,每个i,去右边找,相当于每个i,向左边找,一样的。

  • 相关阅读:
    js写入和读取cookie
    算法笔记汇总精简版
    廖雪峰Git教程3
    廖雪峰Git教程2
    廖雪峰Git教程1
    PHP fastcgi_finish_request 方法
    PHP获取远程文件的大小,通过ob_get_contents实现
    PHP 浮点型运算相关问题
    php中的func_num_args、func_get_arg与func_get_args函数
    C# ListView用法详解
  • 原文地址:https://www.cnblogs.com/liuweimingcprogram/p/6361952.html
Copyright © 2020-2023  润新知