2020牛客NOIP賽前訓練營-普及組第一場牛牛的跳跳棋題解
連結:https://ac.nowcoder.com/acm/contest/7604/B
來源:牛客網
題目描述
牛牛最近在玩一種叫做跳跳棋的遊戲,棋盤可以看成是一個一維的線性陣列,編號從1到n+1。
一開始牛牛的棋子位於第1個格子,遊戲的最終目的是將棋子移動到第n+1個格子。
棋盤1~n的每個格子都有一個“彈力系數”的權值pi。
當棋子位於第i個格子時,它的下一步可以移動到[i−pi,i+pi]範圍內的任意一個格子。
舉例來說,假設第3個格子的彈力系數為2,那麼牛牛下一步可以移動到第1,2,3,4,5格中的任意一格。
現在給定1~n每格的彈力系數pi。
牛牛發現,好像有時由於棋盤的pi設定不合理,導致遊戲無法通關。
所以牛牛準備施展他神奇的魔法,他每次施展魔法都可以使得一個格子的彈力系數pip_ipi+1,他可以施展若干次魔法操作不同的格子,但是要求他不能夠重複對一個格子施展魔法。
牛牛想要知道,為了使跳跳棋通關,他最少施展多少次魔法,並且他應該操作哪些格子。
請輸出牛牛的最小操作次數,以及施展魔法的操作序列,操作序列的第i個數表示該次施展魔法的格子編號,由於答案不唯一,所以請你輸出一個最小字典序的答案。
最小字典序指:在保證第1個數字儘可能小的前提下,保證第2個數字儘可能的小,然後在此前提下保證第3個數字儘可能的小....以此類推。
輸入描述:
1 2 3 4 5 6 7 |
|
輸出描述:
1 2 3 4 5 6 7 |
|
示例1
輸入
1 2 |
|
輸出
1 2 |
|
思路
本來以為是dp,考慮到棋子往回走到某個點可以跳得更遠,後來想了一下,棋子可以在【i-pi,i+pi】範圍內任意移動,說明如果後面有可以跳得更遠得地方,我可以一開始就直接跳到更遠得地方,根本沒必要回退。
直接用s表示不用魔法所能到達得最遠距離,當i>s時說明遊戲無法通關,被迫使用魔法。
AC程式碼
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
|
相關文章
- 2020牛客NOIP賽前集訓營-普及組(第一場) 牛牛的跳跳棋
- 2020牛客暑期多校訓練營(第一場)H Minimum-cost Flow
- [題解](更新中)[test06]2024/11/23 模擬賽 / 2023牛客OI賽前集訓營-提高組(第三場) A~C
- 【牛客訓練記錄】牛客周賽 Round 69
- 【牛客訓練記錄】牛客周賽 Round 70
- 2024牛客暑期多校訓練營2 解題報告
- 2024牛客暑期多校訓練營10 - L. Tada! - 題解
- NOIP 2024 遊記 & 賽前訓練總結
- 牛客2020跨年場 部分題解
- 2020牛客暑期多校訓練營(第三場)D Points Construction Problem 構造思維題Struct
- NOIP 賽前加訓
- 【10.24 牛客普及(四)】 卡片 題解
- 【10.22 牛客普及(三)】 牛半仙的妹子gcd 題解GC
- 2024牛客暑期多校訓練營9
- 2024牛客暑期多校訓練營8
- 2024牛客暑期多校訓練營6
- 2024牛客暑期多校訓練營4
- 2024牛客暑期多校訓練營5
- 2024牛客暑期多校訓練營2
- 2024牛客暑期多校訓練營1
- 牛客練習賽
- 2024牛客暑期多校訓練營2 HI
- ZZJC新生訓練賽第七場題解
- ZZJC新生訓練賽第九場題解
- ZZJC新生訓練賽第二場題解
- NOIP 2017初賽普及組C/C++答案詳解C++
- 牛客小白月賽95 (賽前的練習之我是小菜雞)
- 牛客練習賽60
- 牛客練習賽 26
- 牛客練習賽73 D題:離別
- ZZJC新生訓練賽第十八場題解
- 牛客網暑期ACM多校訓練營(第三場)C Shuffle Cards(splay)ACM
- 牛客小白月賽105 題解
- 牛客周賽 Round 66 題解
- 牛客巔峰賽S2第2場題解(青銅白銀組)
- 牛客練習賽 71 AC
- 20241114 NOIP訓練賽 T3
- 牛客巔峰賽S2第6場題解