zoukankan      html  css  js  c++  java
  • atcoder A

    A - Frog 1


    Time Limit: 2 sec / Memory Limit: 1024 MB

    Score : 100100 points

    Problem Statement

    There are NN stones, numbered 1,2,,N1,2,…,N. For each ii (1iN1≤i≤N), the height of Stone ii is hihi.

    There is a frog who is initially on Stone 11. He will repeat the following action some number of times to reach Stone NN:

    • If the frog is currently on Stone ii, jump to Stone i+1i+1 or Stone i+2i+2. Here, a cost of |hihj||hi−hj| is incurred, where jj is the stone to land on.

    Find the minimum possible total cost incurred before the frog reaches Stone NN.

    Constraints

    • All values in input are integers.
    • 2N1052≤N≤105
    • 1hi1041≤hi≤104

    Input

    Input is given from Standard Input in the following format:

    NN
    h1h1 h2h2  hNhN
    

    Output

    Print the minimum possible total cost incurred.


    Sample Input 1 Copy

    Copy
    4
    10 30 40 20
    

    Sample Output 1 Copy

    Copy
    30
    

    If we follow the path 11 → 22 → 44, the total cost incurred would be |1030|+|3020|=30|10−30|+|30−20|=30.


    Sample Input 2 Copy

    Copy
    2
    10 10
    

    Sample Output 2 Copy

    Copy
    0
    

    If we follow the path 11 → 22, the total cost incurred would be |1010|=0|10−10|=0.


    Sample Input 3 Copy

    Copy
    6
    30 10 60 10 60 50
    

    Sample Output 3 Copy

    Copy
    40
    

    If we follow the path 11 → 33 → 55 → 66, the total cost incurred would be |3060|+|6060|+|6050|=40|30−60|+|60−60|+|60−50|=40.

    题目链接:https://atcoder.jp/contests/dp/tasks/dp_a

    题意:给你一堆石头,每一个石头有一个高度,有一只青蛙站在第一个石头上,青蛙每一次可以跳1-2个石头,并且产生起跳高度和落地高度的差的消耗。

    问你青蛙跳到第N个石头,最小需要消耗多少能量?

    思路:

    简单的线性DP, 定义dp[i]的状态意义为青蛙跳到第i个石头的时候消耗的最小能量,

    转移方程即为:dp[i]=min(dp[i-2]+abs(a[i]-a[i-2]),dp[i-1]+abs(a[i]-a[i-1]))

    初始状态定义: dp[1] = 0 ,  dp[2]=| a[2]-a[1] |

    dp[2]一定要预处理,状态转移只能从i=3开始,因为第二个石头只能由第一个石头跳过去。

    不这样定义会wa的。(亲测,23333)

    我的AC代码:

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    #include <cmath>
    #include <queue>
    #include <stack>
    #include <map>
    #include <set>
    #include <vector>
    #define rep(i,x,n) for(int i=x;i<n;i++)
    #define repd(i,x,n) for(int i=x;i<=n;i++)
    #define pii pair<int,int>
    #define pll pair<long long ,long long>
    #define gbtb ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)
    #define MS0(X) memset((X), 0, sizeof((X)))
    #define MSC0(X) memset((X), '', sizeof((X)))
    #define pb push_back
    #define mp make_pair
    #define fi first
    #define se second
    #define gg(x) getInt(&x)
    using namespace std;
    typedef long long ll;
    inline void getInt(int* p);
    const int maxn=1000010;
    const int inf=0x3f3f3f3f;
    /*** TEMPLATE CODE * * STARTS HERE ***/
    ll n;
    ll dp[maxn];
    ll a[maxn];
    int main()
    {
        gbtb;
        cin>>n;
        repd(i,1,n)
        {
            cin>>a[i];
        }
        dp[1]=0;
        dp[0]=0;
        dp[2]=abs(a[2]-a[1]);
        repd(i,3,n)
        {
            dp[i]=min(dp[i-2]+abs(a[i]-a[i-2]),dp[i-1]+abs(a[i]-a[i-1]));
    
        }
        cout<<dp[n];
        return 0;
    }
    
    inline void getInt(int* p) {
        char ch;
        do {
            ch = getchar();
        } while (ch == ' ' || ch == '
    ');
        if (ch == '-') {
            *p = -(getchar() - '0');
            while ((ch = getchar()) >= '0' && ch <= '9') {
                *p = *p * 10 - ch + '0';
            }
        }
        else {
            *p = ch - '0';
            while ((ch = getchar()) >= '0' && ch <= '9') {
                *p = *p * 10 + ch - '0';
            }
        }
    }

    本博客为本人原创,如需转载,请必须声明博客的源地址。 本人博客地址为:www.cnblogs.com/qieqiemin/ 希望所写的文章对您有帮助。
  • 相关阅读:
    Java操作XML文件
    数据结构之shell排序
    制作个人开发IDE
    ActiveMQ基本详解与总结
    ActiveMQ的作用总结(应用场景及优势)
    C# 封装miniblink 使用HTML/CSS/JS来构建.Net 应用程序界面和简易浏览器
    已使用.netframework,version=v4.6.1 而不是目标框架netcoreapp,version=v2.1 还原包,此包可能与项目不完全兼容
    RabbitMQ的六种工作模式
    RabbitMQ学习系列
    RabbitMQ基本概念和原理
  • 原文地址:https://www.cnblogs.com/qieqiemin/p/10247378.html
Copyright © 2011-2022 走看看