zoukankan      html  css  js  c++  java
  • codeforces Walking in the Rain (dp 水题 线性 dp)

    http://codeforces.com/problemset/problem/192/B

    题意: 有  n 个地板 ,你可以 从  i  跳到 i +1  也可以 跳到 i + 2  ,我们的任务是 从  i 跳到  n   下雨了 ,每个 地板 有 能够 坚持的 天数  a[i] ,

          求最多 多少天以后 我们 还可以 跳到  n 地板 。

    题解:   dp   .

           看到跳到  n  点的 有 两个点  n-1点  和 n - 2点 所以 我们 用 dp[i]  表示最长 dp[i]天 后 一样 能够  跳到  第 i 个点;

            dp[i] = min(max(dp[i - 1],dp[i - 1]) ,a[i]) ;

       

     

     1 #include<cstdio>
     2 #include<cstring>
     3 #include<cmath>
     4 #include<iostream>
     5 #include<algorithm>
     6 #include<set>
     7 #include<map>
     8 #include<queue>
     9 #include<vector>
    10 #include<string>
    11 #define Min(a,b) a<b?a:b
    12 #define Max(a,b) a>b?a:b
    13 #define CL(a,num) memset(a,num,sizeof(a));
    14 #define maxn  1100
    15 #define eps  1e-6
    16 #define inf 9999999
    17 #define read() freopen("data.in","r",stdin) ;
    18 using namespace std;
    19 int a[maxn] ;
    20 int  dp[maxn] ;
    21 int main()
    22 {
    23     int n , m ;
    24     int ans ,i,j;
    25      //read() ;
    26     while(scanf("%d",&n) != EOF)
    27     {
    28          for( i =  0 ; i < n;i++)
    29          {
    30              scanf("%d",&a[i]) ;
    31          }
    32 
    33          for(i = 0 ; i < n;i++) dp[i] = a[i] ;
    34          dp[1] = min(a[0],a[1]) ;
    35          for(i = 2 ; i < n;i++)
    36          {
    37              dp[i] = min(max(dp[i - 1],dp[i - 2]),a[i]) ;
    38 
    39          }
    40          printf("%d\n",dp[n - 1]) ;
    41     }
    42 }
  • 相关阅读:
    Element节点
    Document节点
    ParentNode接口,ChildNode接口
    NodeList接口,HTMLCollection接口
    Node接口
    DOM概述
    Promise对象
    定时器
    IT常用日语
    配置JavaWeb开发环境
  • 原文地址:https://www.cnblogs.com/acSzz/p/2741872.html
Copyright © 2011-2022 走看看