HZF的 AC Dream

来源:互联网 发布:项目管理优化保障措施 编辑:程序博客网 时间:2024/05/29 00:33
Font Size:AaAaAa

Description

某天早晨,HZF大神决定要A爆xxxOJ,大神说:“你们这些挑着题目AC渣渣,看我一口气按顺序AK”。假如一共有10道题目,他从第9道开始A,那么接着就是第10道,第1道,第2道...第8道,完成计划(头尾相接,形成循环)。虽然大神的世界我们不能理解,但是,大家看着衣带渐宽,日渐憔悴的HZF,大家决定阻止他的计划。daidao说:“哎呀,大神,来LOL带我超神吧!”。HZF当然不会同意:“走开!”。当他呵斥走打断他计划的人后,他便可以安静的A掉K个题(包括他正在做的题共k个)。然后炸天哥又来了:“来,炉石传说,我虐你!”,大神当然还是拒绝:“快走开!”,接着再安静的A掉K个题目。接着moon_yu来了:“打篮球的有木有?组个队。”HZF:“你,有多远走多远!”。。。(即,他每AC掉K个题目后,就要被干扰一次,请看Hint方便理解)HZF被干扰的时候将不能思考,也不能做题。在AC第i个题目时,如果有人来干扰他,他做完所有题的时间将增加a[i](即时间浪费了a[i])。显然,若是从不同的题号开始做题,那么HZF做题的总时间将可能不同。那么有个问题需要你帮忙解决:求HZF浪费的最少的时间。这里默认,HZF做第一个题的时候一定被干扰。

Input

多组输入。对于每组,第一行输入包含两个整数 n,k (1 ≤ k ≤ n ≤ 10^5),第二行有n个整数a1, a2, ..., an (1 ≤ ai ≤ 10^5)。我们保证n%k==0。

Output

对于每组,你将输出一行,每行只有一个数字,表示浪费的最少时间。

Sample Input

6 23 2 1 6 5 410 51 3 5 7 9 9 4 1 8 5

Sample Output

96

Hint

第一个样例:如果HZF从第1个题目开始做题,第一次被干扰浪费3的时间,接着AC 1、2题,然后做3题,浪费1的时间。之后,HZF AC了3、4题,做5题时又被干扰,浪费5的时间。最后,HZF AC了5、6题,做完了所有的题。那么浪费的时间为:3 + 1 + 5 = 9。如果从第2个题目开始做题,他将在做2、4、6题时被干扰,浪费的时间为:2 + 6 + 4 = 12。所以答案是9。
参考代码如下:
#include<cstdio> int a[100005]; int main() {     int n, k;     while (~scanf("%d %d", &n, &k))     {         int i;         for (i = 1; i <= n; i++)             scanf("%d", &a[i]);         int min = 0x7FFFFFFF;         for (i = 1; i <= k; i++)         {             int t = 0;             int j = 0;             while (i+j*k <= n)             {                 t += a[i + j*k];                 j++;             }             if (t < min) min = t;         }         printf("%d\n", min);     }     return 0; }
0 0
原创粉丝点击