目錄
題目 題解
有乙個小球掉落在一串連續的彈簧板上,小球落到某乙個彈簧板後,會被彈到某乙個地點,直到小球被彈到彈簧板以外的地方。知識點:dp假設有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[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。行號由上至...