题目背景
(本道题目隐藏了两首歌名,找找看哪~~~)
《爱与愁的故事第一弹·heartache》第一章
《我为歌狂》当中伍思凯神曲《舞月光》居然没赢给萨顶顶,爱与愁大神心痛啊~~~而且最近还有一些令人伤心的事情,都让人心痛(最近真的很烦哈)……
题目描述
最近有n(n<=3000)个不爽的事,每句话都有一个正整数刺痛值(心理承受力极差)。爱与愁大神想知道连续m(m<=n)个刺痛值的最小值是多少,但是由于业务繁忙,爱与愁大神只好请你编个程序告诉他。
输入输出格式
输入格式:
第1行:两个数 n,m。
第2行~第2+n-1行:每行一个数,表示ai的刺痛值。
输出格式:
只有一个整数,表示连续m个刺痛值的最小值是多少。
输入输出样例
输入样例#1:
8 3 1 4 7 3 1 2 4 3
输出样例#1:
6
说明
30%数据:n<=20
60%数据:n<=100
90%数据:n<=1000
100%数据:n<=3000,m<=n,ai<=100
代码:数据很水,代码很low,但是A了
#include<cstdio> #include<cstdlib> #include<cstring> #include<iostream> #include<algorithm> using namespace std; #define maxn 99999999 int n,m,a[3001]={0},sum,ans=maxn; int main() { scanf("%d%d",&n,&m); for(int i=1;i<=n;i++) scanf("%d",&a[i]); for(int i=1;i<=n-m+1;i++) { sum=0; for(int j=i;j<m+i;j++) { sum+=a[j]; } if(sum<ans) ans=sum; } printf("%d",ans); return 0; }
注意:
在进行累加的时候一定要注意
1.第一个循环一直循环到m-n+1,其实也可以循环到m,但浪费时间,没什么意义
2.第二个循环一定要循环到m+i-1!!!
eg:从3~7,相减出来时应是4,但:3,4,5,6,7是5个数,所以要减1