贪心的小onの题解

30pts + 30pts

对于 n < 20 的情况直接暴力即可, 对于 n < 2000 的情况, 考虑一维dp, 设计状态为 dp[i] 其中 i 表示在第 i 个位置能够获得的最大宝藏价值, 直接线性转移即可。时间复杂度 O(n^2)

100pts

用手模拟一组极端数据,1,1,2,4,8,16,32,64……,对于我们的数据范围 a_i < 10^9 来说最多转移29次连续的( 2^{30} 超过了 10^9

对于状态设计的话,我们任然考虑一维dp :dp[i] 第一维 i 任然表示在第 i 位的时候可以取到的最大价值的宝藏, 对于 dp[i] 来说,它的最优的价值是从 dp[i - 30] , dp[i - 29] , …… , dp[i - 1] 转移过来的。时间复杂度 O(n \times 30)