爱与愁的心痛
题目背景
(本道题目隐藏了两首歌名,找找看哪~~~)
《爱与愁的故事第一弹·heartache》第一章。
《我为歌狂》当中伍思凯神曲《舞月光》居然没赢给萨顶顶,爱与愁大神心痛啊~~~而且最近还有一些令人伤心的事情,都让人心痛(最近真的很烦哈)......
题目描述
最近有 n 个不爽的事,每句话都有一个正整数刺痛值(心理承受力极差)。爱与愁大神想知道连续 m 个刺痛值的和的最小值是多少,但是由于业务繁忙,爱与愁大神只好请你编个程序告诉他。
输入格式
第一行有两个用空格隔开的整数,分别代表 n 和 m。
第 2 到第 (n + 1) 行,每行一个整数,第 (i + 1) 行的整数 a_i 代表第 i 件事的刺痛值 a_i。
输出格式
输出一行一个整数,表示连续 m 个刺痛值的和的最小值是多少。
样例 #1
样例输入 #1
```
8 3
1
4
7
3
1
2
4
3
```
样例输出 #1
```
6
```
提示
数据规模与约定
对于 30\\% 的数据,保证 n \\leq 20。
对于 60\\% 的数据,保证 n \\leq 100。
对于 90\\% 的数据,保证 n \\leq 10\^3。
对于 100\\% 的数据,保证 0 \\leq m \\leq n \\leq 3 \\times 10\^3,1 \\leq a_i \\leq 100。
cpp
#include<iostream>
using namespace std;
#define MAX 3000+5
int a[MAX];
int b[MAX];
int main() {
int n, m;
cin >> n >> m;
int min_ = 0;
for (int i = 0; i < n; i++) { //录入数据
cin >> a[i];
min_ += a[i];
}
if (m != n) //如果m与n一直,就是所有元素的和
for (int i = 0; i < n - m; i++) { //一共几组数
for (int j = 0; j < m; j++) //这个循环求第几组的和
b[i] += a[i + j];
min_ = min(min_, b[i]);
}
printf("%d\n", min_);
return 0;
}