#CF1978A. 爱丽丝与书
爱丽丝与书
A. 爱丽丝与书
每次测试时间限制: 秒 每次测试内存限制: 兆字节
爱丽丝有 本书。第 本书有 页,第 本书有 页,……,第 本书有 页。爱丽丝执行如下操作:
她将所有书分成两堆非空的书堆,每本书恰好属于其中一堆。 爱丽丝阅读每一堆中编号最大的那一本书。
爱丽丝非常喜欢阅读,请你帮她求出:将书分成两堆后,她能阅读的最大总页数。
输入
每组测试包含多个测试用例。 第一行输入一个整数 (),表示测试用例的数量。
每个测试用例的第一行输入一个整数 (),表示书的数量。
每个测试用例的第二行输入 个整数 (),表示每本书的页数。
输出
对于每个测试用例,输出一个整数,表示爱丽丝能阅读的最大总页数。
样例输入
样例输出
说明
在第一个测试用例中,爱丽丝可以将第 本书放入第一堆,第 本书放入第二堆,此时她会阅读 页。
在第二个测试用例中,爱丽丝可以将编号为 、 的书放入第一堆,编号为 、 的书放入第二堆。她会阅读第一堆中编号最大的书 ,第二堆中编号最大的书 ,总共阅读 页。 核心思路(基于标程) 关键结论:无论怎么分书,编号为 n 的书一定会被读到。因为编号 n 是所有书里最大的,它所在的那一堆,最高编号必然是 n,所以这本书一定会被选中阅读。 基于这个结论,我们只需要做两件事:
固定选择最后一本书 an; 在前 n−1 本书中找到页数最多的那一本 ak(k<n); 两者相加就是答案。