最长峰形线 在科学研究中,很多时候需要从一大堆原始数据中找出一条最好的“峰形线”。所谓长度为 L 的“峰形线”,是指 L 个数字组成的有序序列 { D1, …, DL },满足条件:存在下标 i(1 Di+1 > … > DL。 顺次给出 n 个数字,你可以从中删掉部分数字,使得剩下的数字能构成峰形线。要求构造出来的峰形线是最长的。当最长峰形线不唯一时,你要输出最对称(即升序和降序两部分长度之差为最小)的那条。 时间限制:7000 内存限制:262144 输入 输入第一行给出一个正个整数 n (3 ≤ n ≤ 104),随后一行给出 n 个在区间 [-10000, 10000] 内的整数,以空格分隔。 输出 首先在一行中输出最长峰形线的长度、峰顶数字的序号(从 1 开始)和它的值,数字间以 1 个空格分隔。如果解不存在,则在一行中输出 `No peak shape`。裁判数据保证输出是唯一的。 样例输入 样例#1: 20 1 3 0 8 5 -2 29 20 20 4 10 4 7 25 18 6 17 16 2 -1 样例#2: 5 -1 3 8 10 20 样例输出 样例#1: 10 14 25 样例#2: No peak shape
正确答案:参考程序(Python):最长峰形线。求每个位置左最长上升、右最长下降,峰=左+右-1。取最长,最对称。样例20→10 14 25。核心:双向LIS峰形。
试卷来源:202409 青少年等级考试C/C++真题四级