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牛客暑期多校訓練營(第三場)D Points Construction Problem 構造思維題Struct
- 【10.22 牛客普及(三)】 牛半仙的妹子gcd 題解GC
- 牛客網暑期ACM多校訓練營(第三場)C Shuffle Cards(splay)ACM
- NOIP 2017初賽普及組C/C++答案詳解C++
- NOIP 2012 普及組 複賽 culture 文化之旅
- 牛客小白月賽88-DE題解
- nowcoder 牛客練習賽9 B
- 2020.10.16 【NOIP2014】普及組模擬賽總結
- 牛客SQL練習第21題SQL
- NOIP 提高組第一式第一題——玩具迷題
- 1316 文化之旅 2012年NOIP全國聯賽普及組
- 1008 選數 2002年NOIP全國聯賽普及組
- 牛客練習賽40 B 小A與任務(貪心)
- 4.17訓練賽
- 牛客小白月賽88 出題覆盤
- 問題 D: NOIP2004普及組第2題 花生採摘
- 1009 產生數 2002年NOIP全國聯賽普及組
- 牛客小白月賽89
- 牛客小白月賽88
- 2020.10.07【普及組】模擬賽C組 總結
- Mysql 練習(牛客網)MySql
- 1126 數字統計 2010年NOIP全國聯賽普及組
- 牛客練習賽74 E CCA的期望(算概率的技巧+floyd處理)
- 程式設計謎題:提升你解決問題的訓練場程式設計
- 牛客程式設計巔峰賽S2第11場程式設計
- 牛客IOI周賽20-普及組-D 夾縫中求和(線性優化)優化
- 極客大學java進階訓練營學習分享Java
- NOIP2020 集訓
- 問題 B: NOIP2009普及組第2題 分數線劃定
- java小白訓練營Java
- 11.1NOIP模擬賽解題報告
- 牛客挑戰賽72 總結
- 挑選方案問題(牛客競賽 思維題+推導公式)公式
- 如何訓練解決問題的能力?
- P2671 [NOIP2015 普及組] 求和
- 2020 KCTF秋季賽 | 第一題點評及解題思路
- 【MindStudio訓練營第一季】課程筆記筆記