• [NOIP2018D1T1][NOIP2013D1T1][Luogu P5019]铺设道路 题解


    这道题其实很不错(虽然我对CCF抄自己的题这种行为很反感)。

    我推了1个多小时的公式终于AC了。

    可以用DP来解决此题。

    设 $ dp[i] $ 为铺设前 $ i $ 块区域所需要的天数。

    可以分类讨论一下。

    如果 $ d[i] le d[i-1] $, 

    那么 $ dp[i]=dp[i-1] $。

    因为在铺设第 $ i-1 $ 块区域时就已经铺设好了第 $ i $ 块区域。

    反之,如果 $ d[i] > d[i-1] $,

    那么 $ dp[i]=dp[i-1]+d[i]-d[i-1] $。

    因为在铺设完第 $ i -1 $ 块区域时,第 $ i $ 块区域还需要铺设 $ d[i]-d[i-1] $ 天。

    最后输出 $ dp[n] $ 即可。

    $ m code $

    # include <bits/stdc++.h>
    
    const int maxN = 1e5 + 10;
    int d[maxN];
    int dp[maxN]; 
    int n;
    using namespace std;
    namespace Aehnuwx {
        void init() {
            scanf("%d", &n);
            for(register int i = 1; i <= n; i ++)
                scanf("%d", &d[i]);
        }
        int work();
        //void work();
        int work() {
            for(int i = 1; i <= n; i ++)
                if(d[i] <= d[i - 1]) dp[i] = dp[i - 1];
                else dp[i] = dp[i - 1] + d[i] - d[i - 1];
            return dp[n];
        }
    };
    using namespace Aehnuwx;
    int main() {
        Aehnuwx::init();
        printf("%d", Aehnuwx::work());
        return 0;
    }
    转载是允许的,但是除了博主同意的情况下,必须在文章的明显区域说明出处,否则将会追究其法律责任。
  • 相关阅读:
    Django多表操作
    Django单表操作
    Django模板语言的复用
    DTL
    Django视图层、虚拟环境
    Django路由详解
    初识Django
    web框架
    JQ初级
    linux的基础配置命令
  • 原文地址:https://www.cnblogs.com/Xray-luogu/p/10199483.html
Copyright © 2020-2023  润新知