ACdream 1079 Walking in the Rain (線性dp)

題目鏈接:
ACdream 1079

題意:
n  個地板 ,你可以 從 i  跳到i+1  也可以 跳到i+2  ,我們的任務是 從 i  跳到 n  下雨了 ,第i  個地板能夠堅持的天數 爲a[i]  。問你最多多少天以後我們還可以跳到 第n  個地板。

題解:
dp 
跳到 n  點的有 n1  點和 n2  點 。

設用 dp[i]  表示能夠跳到第i  個點的最長天數。

所以轉移方程爲:
dp[i]=min(a[i],max(dp[i1],dp[i2])); 

最後的答案就是:dp[n1] 

AC代碼:

#include<bits/stdc++.h>
using namespace std;
int ans,n;
int dp[1234];
int a[1234];
int main()
{
    cin>>n;
    for (int i=0;i<n;i++) 
    {
        cin>>a[i];
        dp[i] = a[i];
    }

    dp[1]=min(a[0],a[1]);
    for (int i=2;i<n;i++) 
    {
        dp[i]=min(a[i],max(dp[i-1],dp[i-2]));
    }
    cout<<dp[n-1]<<endl;
    return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章