#P12802. 回忆与展望
回忆与展望
回忆与展望
Problem Description
通过梦境转移器,老师成功进入了编号最大的梦境。在那里,他遇到了 Seia。她的手上有 份回忆,编号为 。其中每一份都包含了老师与学生们度过的最美好的时光。这些日常时光交织在一起,共同组成了一个充满了无数奇迹的世界。 老师给编号为 ()的回忆确定了它的 美好度 。他想要按照某个顺序重温所有的回忆,也就是确定一个 的排列 并依次重温编号为 的回忆。 令 。老师对未来的 展望程度 可以用一个变量 表示,初始时 。接下来在老师重温回忆的过程中,展望程度会根据美好度而发生变化。具体地,在老师重温编号为 ()的回忆时:
- 若 ,展望程度会增加 ,也就是 。
- 若 ,展望程度会增加 ,也就是 。
- 若 ,展望程度会增加 ,也就是 。 Seia 通过某种方法得知了整数 的值。她还知道老师喜欢美好, 所以 。她想要帮助老师确定排列 ,使得重温所有回忆后老师的展望程度最大。 Seia 瞥见了你,此时你或许在面对着一块电脑屏幕编写着代码,又或许是面对着一张草稿纸沉思。你或许正重温着以前某一次竞赛的试题,又或许对着一个极为重要的竞赛成绩感到懊恼。其实,她更建议你在竞赛结束后与你的同学们聊聊天,留意留意这个世界的某处角落,回忆回忆过去,展望展望未来。你可能在某一天突然发觉,竞赛的具体知识和最终结果变得不再重要,而那份美好的回忆才是你人生中无法抹去的奇迹。 现在,是时候将这个问题告诉你了,Seia 想道。 你只需要告诉她展望程度的最大值。
Input
本题包含多组测试数据。 来自 Seia 的温馨提示:本题输入输出量较大,对于使用 C++ 语言参加竞赛的选手,强烈建议使用关闭同步流的 cin 和 cout 完成输入输出。 首先在第一行输入一个整数 ()表示测试数据组数。 对于每一组测试数据,输入包含两行。 第一行包含四个整数 (,),表示回忆的数量和计算展望程度所需要的三个参数。 第二行包含 个整数 ()表示回忆的美好度。
Output
对于每一组测试数据,输出包含一行一个整数表示展望程度的最大值。
Sample Input
2
5 9 7 5
3 1 2 3 4
10 1919810 114514 1
2 3 5 9 10 10 2 2 5 4
Sample Output
43
15472995
Hint
在样例的第一组测试数据中,取 时展望程度为 ,达到最大值。具体地:
- 由于 ,因此 。
- 由于 ,因此 。
- 由于 ,因此 。
- 由于 ,因此 。
- 由于 ,因此 。 存在其他达到最大值的排列,在此仅列举其中一个。
Source
2025“钉耙编程”中国大学生算法设计暑期联赛(4)