‹ 上一题 下一题 ›

07356. 打家劫舍·作案计划 未做

1000 ms 256 MB 测试点 10 线性DP

题目描述

打家劫舍: 家店排一排,第 家有 元,不能偷相邻两家。输出最大收益,以及一个达到最大收益的作案方案(按编号从小到大输出偷了哪些店)。若多种方案,输出偷的店数最少的那一种;仍相同输出编号最小的一种。

输入格式

第一行一个整数 。
第二行 个整数 。

输出格式

第一行一个整数:最大收益。
第二行若干个递增整数:偷的店编号,用空格分隔(至少偷一家)。

样例

输入
5
2 7 9 3 1
输出
12
1 3 5

提示

构造规则:从最后一家往回想——若 ,说明最优方案里第 家被偷了:收下它,接着考虑第 家;否则第 家不偷,接着考虑第 家(下标越界时,、 都按 算)。一路走完,把收下的店按编号从小到大输出即可——这就是本课文章第 15 章「记录决策」的做法:转移时顺手记下来路,最后从终点倒着走回起点。

样例解释:()。

  • : → 偷第 5 家,跳到 3;
  • : → 偷第 3 家,跳到 1;
  • : → 偷第 1 家,结束。

收获 ,方案 1 3 5,与样例输出一致。

再体会一下「编号最小」的口径:对输入 ,最大收益 可由「偷第 1、4 家」或「偷第 2、4 家」达成;按规则从 收起(),退回第 2 家时 并不大于 (等号处不偷),最终输出 1 4。

数据范围

,。

输入
输出

            
答案