OJ现已增加邮箱找回密码功能,还没有绑定邮箱的同学们请抓紧时间,以免密码丢失无法找回


问题1554--合并石子Plus

1554: 合并石子Plus

时间限制: 1 Sec  内存限制: 256 MB
提交: 27  解决: 5
[提交] [状态] [讨论版] [命题人:]

题目描述

现在在你面前从左到右排列着 N 个石子,每个石子有一个价值 ai 和一个种类 ki ,假设你现在选择了区间 [L, R] ,且满足 kL = k,那么你将获得这个区间内所有的石子的价值,即所有 ai 的和。请问在一下条件下,你如何选择才能获得的最多的价值呢?请输出这个最多的价值。
条件1:你可以选择任意个区间,但是每个区间之间不能相交。
条件2:你需要保证你选择的每个区间长度均大于等于 S 
当然,如果没有满足上述条件的区间,输出 0 。

输入

第一行两个整数 (1<= N <= 1000000),S(2 <= S <= N),含义如题意所述;
第二行一个长度为 N 的数组 a,表示每个石子的价值,保证 ai 在int范围内且为正整数;
第三行一个长度为 N 的数组 k(1 <= ki <= 1000) 表示每个石子的种类。

输出

输出一个整数。

样例输入 Copy

10 2
1000 20 100 2 4 100 1000 1000 1000 1000
1 2 3 3 2 1 1 2 3 2

样例输出 Copy

5226

来源/分类