薯队长写了n篇笔记,编号从1~n,每篇笔记都获得了不少点赞数。 薯队长想从中选出一些笔记,作一个精选集合。挑选的时候有两个规则: 1.不能出现连续编号的笔记。 2.总点赞总数最多 如果满足1,2条件有多种方案,挑选笔记总数最少的那种
动态规划,按部就班的模拟出来就可以了
#这个题目采用动态规划 import sys def helper(res,n): dp = [0]*n dp[-1],dp[-2] = 0,0 dpNum = [0]*n dpNum[-1],dpNum[-2] = 0,0 for i in range(n): if dp[i-1] < dp[i-2] + res[i]: dp[i] = dp[i-2] + res[i] dpNum[i] = dpNum[i-2] + 1 else: dp[i] = dp[i-1] dpNum[i] = dpNum[i-1] return dp[n-1],dpNum[n-1] if __name__ == "__main__": n = int(sys.stdin.readline().strip()) res = list(map(int,sys.stdin.readline().split())) out1,out2 = helper(res,n) print(out1,out2)