Hust oj 1186 青蛙過河(dp)_dp

來源:互聯網
上載者:User
青蛙過河 Time Limit: 1000 MS Memory Limit: 65535 K Total Submit: 289(83 users) Total Accepted: 109(76 users) Rating: Special Judge: No Description 在河上有一座獨木橋,一隻青蛙想沿著獨木橋從河的一側跳到另一側。在橋上有一些石子,青蛙很討厭踩在這些石子上。由於橋的長度和青蛙一次跳過的距離都是正整數,我們可以把獨木橋上青蛙可能到達的點看成數軸上的一串整點:0,1,……,L(其中L是橋的長度)。座標為0的點表示橋的起點,座標為L的點表示橋的終點。青蛙從橋的起點開始,不停的向終點方向跳躍。一次跳躍的距離是s到t之間的任意正整數(包括s,t)。當青蛙跳到或跳過座標為L的點時,就算青蛙已經跳出了獨木橋。


題目給出獨木橋的長度L,青蛙跳躍的距離範圍s,t,橋上石子的位置。你的任務是確定青蛙要想過河,最少需要踩到的石子數。 Input 有多組測試資料。
對於每組測試資料,第一行四個正整數L, s, t, n(1 <= L <= 10^5, 1 <= s <= t <= 10,1 <= n <= 100),分別表示獨木橋的長度,青蛙一次跳躍的最小距離,最大距離,及橋上石子的個數。第二行有n個不同的正整數分別表示這n個石子在數軸上的位置(資料保證橋的起點和終點處沒有石子)。所有相鄰的整數之間用一個空格隔開。 Output 每組測試資料僅輸出一行,包括一個整數,表示青蛙過河最少需要踩到的石子數。 Sample Input 10 2 3 5
2 3 5 6 7 Sample Output

2

先標記出哪些地方有石子,然後從後往前跑dp

狀態轉移方程:dp[i] = min(dp[i],dp[i+j])    s<=j<=t;找到之前最少的需要踩的石子數,然後再加上當前是否有石子

#include<cstdio>#include<iostream>#include<algorithm>#include<cstring>#include<cmath>using namespace std;const int Maxn = 100015;const int Inf = 0x3f3f3f;int dp[Maxn];int vis[Maxn];int L,s,t,n;int main(){    while(~scanf("%d%d%d%d",&L,&s,&t,&n))    {        memset(dp,0,sizeof(dp));        memset(vis,0,sizeof(vis));        int index;        for(int i=0;i<n;i++)        {            scanf("%d",&index);            vis[index] = 1;        }        for(int i=L;i>=0;i--)        {            dp[i] = Inf;            for(int j=s;j<=t;j++)            {                dp[i] = min(dp[i],dp[i+j]);            }            dp[i] += vis[i];        }        printf("%d\n",dp[0]);    }}


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.