#1329. 「一本通 5.1 练习 2」分离与合体

    ID: 1329 传统题 1000ms 512MiB 尝试: 0 已通过: 0 难度: 3 上传者: 标签>区间DP最优合并递归输出路径一本通中等区间dp

「一本通 5.1 练习 2」分离与合体

题目描述

杜神牛造了 nn 个区域,它们紧邻着排成一行,编号为 11nn。每个区域里都有一把金钥匙,第 ii 把金钥匙的价值为 aia_i

一开始,LYD 可以选择 11n1n-1 中的任意一个区域 kk 发生分离,使区间 [1,n][1,n] 被分成 [1,k][1,k][k+1,n][k+1,n] 两个独立区间。之后,每个长度大于 11 的区间都可以继续选择一个分离位置,直到每个区间只剩下一个区域。

分离结束后,小 LYD 会再合体。若某次分离发生在区域 kk,合并后的区间左右端区域金钥匙价值分别为 ala_lara_r,则这次合体获得的价值为 (al+ar)×ak(a_l+a_r) \times a_k

请计算最终可以获得的最大总价值,并按照分离阶段从前到后、区域从左到右的顺序,输出发生分离的区域编号。若有多种最优方案,选择输出字典序最小的方案。

输入格式

第一行包含一个正整数 nn

第二行包含 nn 个正整数 a1,a2,,ana_1,a_2,\ldots,a_n,表示每把金钥匙的价值。

输出格式

第一行输出一个整数,表示可以获得的最大总价值。

第二行输出若干个整数,表示发生分离的区域编号,相邻整数之间用一个空格分隔。

7
1 2 3 4 5 6 7
238
1 2 3 4 5 6

数据范围与提示

  • 对于 20%20\% 的数据,n10n \le 10
  • 对于 40%40\% 的数据,n50n \le 50
  • 对于 100%100\% 的数据,n300n \le 300ai300a_i \le 300
  • 保证运算过程和结果不超过 3232 位正整数范围

来源

一本通 5.1 练习 2