A93507.舞萌基本练习
普及+/提高
通过率:0%
时间限制:1.00s
内存限制:128MB
题目描述
Welcome24ever 在游玩舞萌 dx 的过程中,发现一首歌可以分成不超过 k 段分别进行练习。
具体来说,这首歌共有 n 个音符,每个音符有一个难度值。第 i 个音符的难度值为 ai。Welcome24ever 觉得一段歌曲的音符的难度应该是尽可能变难的。因此对于音符序列的一个区间 [l,r],她认为这段区间的「不优美度」是这段区间的逆序对数。
一个区间 [l,r] 的逆序对数被定义为满足 l≤i<j≤r 且 ai>aj 的数对 (i,j) 的个数。
Welcome24ever 希望把这首歌划分成不超过 k 个子段,满足每个音符都至少属于一个子段,使得「不优美度最大的段」的不优美度尽可能小。
形式化地,你需要划分出 t≤k 个区间 [l1,r1],[l2,r2],…,[lt,rt],满足:
- l1=1,rt=n。
- 对 1≤i<t,ri+1=li+1。
- 对 1≤i≤t,li≤ri。
定义 f(l,r) 表示区间 [l,r] 的不优美度,目标是最小化:
i=1maxtf(li,ri)。
输入格式
本题单个测试点内有多组测试数据。第一行是一个正整数 T,表示数据组数。对每组数据:
第一行是两个整数 n,k(1≤k≤n≤105),表示歌曲的音符数和最多的划分段数。
第二行有 n 个整数 a1,a2,…,an(−109≤ai≤109),表示每个音符的难度。
数据保证单个测试点内的 n 之和不超过 105。
输出格式
对每组数据,输出一行一个整数表示答案。
输入输出样例
输入#1
2 5 2 1 3 2 5 4 8 2 4 2 3 6 7 1 8 5
输出#1
1 2
说明/提示
样例解释
第 1 组
n=5,k=2,a=[1,3,2,5,4]。
例如把它分成两段:
- 第 1 段 [1,3]:[1,3,2],逆序对是 (2,3)(因为 a2=3>a3=2),所以 f(1,3)=1。
- 第 2 段 [4,5]:[5,4],逆序对是 (4,5)(因为 a4=5>a5=4),所以 f(4,5)=1。
此时 max(f(1,3),f(4,5))=max(1,1)=1,可以达到答案 1。
第 2 组
n=8,k=2,a=[4,2,3,6,7,1,8,5]。
通过合适地分成两段,可以让「不优美度最大的段」的最小可能值为 2,所以答案是 2。