彈簧板(加強) 計蒜客

2021-10-19 09:47:55 字數 1266 閱讀 4214

目錄

題目  題解

有乙個小球掉落在一串連續的彈簧板上,小球落到某乙個彈簧板後,會被彈到某乙個地點,直到小球被彈到彈簧板以外的地方。

假設有n 個連續的彈簧板,每個彈簧板佔乙個單位距離,a[

i]代表代表第

i 個彈簧板會把小球向前彈a[

i]個距離。比如位置

1的彈簧能讓小球前進

2個距離到達位置

3。如果小球落到某個彈簧板後,經過一系列彈跳會被彈出彈簧板,那麼小球就能從這個彈簧板彈出來。現在希望你計算出小球從任意乙個彈簧板落下,最多會被彈多少次後,才會彈出彈簧板。

輸入格式

第乙個行輸入乙個

n 代表一共有

n(1≤

n≤100000)

個彈簧板。第二行輸入

n 個數字,中間用空格分開。第

i 個數字ai

​(1≤ai

​≤30)

代表第i

個彈簧板可以讓小球移動的距離。

輸出格式

輸出乙個整數,代表小球最多經過多少次才能彈出彈簧板。

輸出時每行末尾的多餘空格,不影響答案正確性

要求使用「檔案輸入輸出」的方式解題,輸入檔案為

spring.in

,輸出檔案為

spring.out

樣例輸入5

2 2 3 1 2

樣例輸出3

知識點:dp

分析:我們首先用dp[i]來記錄第i位置跳出邊界的次數,然後得出dp狀態轉移方程:dp[i]=dp[i+a[i]]+1第i位置跳出邊界的次數=他能跳到的位置跳出邊界的次數+1,注意這裡要逆序處理

**:

#include#include#include#includeusing namespace std;

const int noip=1e5+35;

int a[noip];

int dp[noip];//記錄每個位置跳出邊界的次數

int main()

for (int i=n;i>=0;i--)

cout

}

計蒜客 彈簧板

有乙個小球掉落在一串連續的彈簧板上,小球落到某乙個彈簧板後,會被彈到某乙個地點,直到小球被彈到彈簧板以外的地方。假設有 n n 個連續的彈簧板,每個彈簧板佔乙個單位距離,a i a i 代表代表第 i i 個彈簧板會把小球向前彈 a i a i 個距離。比如位置 1 1 的彈簧能讓小球前進 2 2 ...

計蒜客 公告板

問題描述 蒜廠有乙個 h w 的矩形公告板,其中 h 是高度,w 是寬度。現在有若干張 1 wi 的公告,wi 是寬度,公告只能橫著放,即高度為 1 的邊垂直於水平面,且不能互相有重疊,每張公告都要求盡可能的放在最上面的合法的位置上。若可以放置,輸出每塊可放置的位置的行號 若不存在,輸出 1。行號由...

計蒜客習題 公告板

問題 蒜廠有乙個 h w 的矩形公告板,其中 h 是高度,w 是寬度。現在有若干張 1 wi 的公告,wi 是寬度,公告只能橫著放,即高度為 1 的邊垂直於水平面,且不能互相有重疊,每張公告都要求盡可能的放在最上面的合法的位置上。若可以放置,輸出每塊可放置的位置的行號 若不存在,輸出 1。行號由上至...