题目描述
暑假共有 n 天,第 i 天的精力指数为 a[i],你想要利用假期依次(按 1,2,…,m 顺序) 复习 m 门功课,第 i 门功课的重要程度为 b[i],且每门功课的复习时段必须连续,并且不能有某天不干事。
假设第 i 门功课的复习时段为第 l∼r 天,那么第 i 门功课的收益为 b[i]×(a[l]+a[l+1]+⋯+a[r]),你的总收益为 m 门功课收益的总和。
请你制订一个复习计划,使得总收益最大。
形式化地,给定序列 a[1∼n],b[1∼m],你需要把 1,2,...,n 这个序列分成首尾相连且非空的 m 段,假设每段的 a 之和为 s[1∼m],最大化 ∑i=1mb[i]×s[i] 的值。
例如 a=[−3,6,−1,−8,7,−6],b=[−3,2],最优策略是第 1∼4 天复习第 1 门功课,收益为 −3×(−3+6−1−8)=18;第 5∼6 天复习第 2 门功课,收益为 2×(7−6)=2;总收益为 18+2=20。
例如 a=[6,3,5,10,5],b=[−8,−5,−5],最优策略是分成 [1],[2,3,4],[5] 三段,总收益为 −8×6×5×(3+5+10)−5×5=−163。
输入描述
第一行 1 个整数 T,代表有 T 组数据。
每组数据共三行,第一行有 2 个正整数 n,m,表示暑假的天数和需要复习的功课数量。
第二行有 n 个整数 a[1∼n],其中 a[i] 表示第 i 天的精力指数。
第三行有 m 个整数 b[1∼m],其中 b[i] 表示第 i 门功课的重要程度。
输出描述
输出 T 行,每行 1 个整数代表答案。
输入样例1
5
6 2
-3 6 -1 -8 7 -6
-3 2
5 4
-9 -6 -6 -7 -8
-5 7 -9 -3
7 7
7 2 3 0 -2 4 2
-9 -2 -5 0 -7 9 -1
5 3
10 4 6 7 4
-1 -9 2
5 3
6 3 5 10 5
-8 -5 -5
输出样例1
20
144
-34
-12
-163
数据范围
测试点编号 |
n≤ |
特殊性质 |
1∼7 |
10 |
无 |
8∼12 |
500 |
13∼16 |
2000 |
所有的 a[i],b[i] 均为正整数 |
17∼20 |
2000 |
无 |
对于所有测试点:1≤T≤20,1≤m≤n≤2000, −103≤a[i],b[i]≤103。