冬天与火锅更配

冬天与火锅更配
描述
冬日里的一抹暖阳总是能给人们留下深刻的记忆,人们喜爱冬天的太阳,就跟人们喜爱冬天的火锅一般。
寒冷的冬天总会让人想起火锅,最近小Z特别想去吃火锅,刚好某家转转火锅刚开业有活动,有n盘火锅围成一个圈,第一盘和最后一盘是相连的,每一盘火锅都有一个价值a[i],现在可以吃连续的m盘火锅,小Z想知道他所吃的那连续的m盘火锅的最大价值可以是多少?你能帮帮憨憨的小Z吗。
格式
输入格式
第一行数入两个整数n,m(1<=m<=n<=2000000),分别表示火锅的盘数和可以吃的连续的盘数
第二行输入n的数ai,分别表示每一盘火锅的价值
输出格式
输出一个整数,表示连续m盘火锅的最大价值
样例
样例输入
5 3
6 1 2 5 3
样例输出
14
题目意思是围成一个圈,圈的话用代码实现比较麻烦,所以就把前面的m个元素接在了最后,同时算出前面m的元素的和,又因为“尺”的大小没有变,一直是m长,所以 每次加一个数,同时减去前面的第m个数,得到更一段的值,再与前面得到的值比较,最后输出最大的值。
代码如下:

#include<stdio.h>
long long int a[4100100];//结合题目可得数组最大为2000000+2000000=4000000,为了保险起见开大一点
int main()
{
	long long int m,n;
	while(~scanf("%lld%lld",&n,&m))
	{
		long long int i,j,k,t,sum=0;
		i=j=k=t=sum=0;
		for(i=0;i<n;i++)
			scanf("%lld",&a[i]);
		for(i=0;i<m;i++)
		{
			a[n+i]=a[i];//将前面的m个元素接在后面
			t=t+a[i];//计算前m个元素的和
		}
		while(i<n+m)
		{
			if(sum<t) sum=t;//将最大的和赋给sum
			t=t+a[i];
			t=t-a[i-m];//这里就是加上一个数,再减去前面的一个数,使得“尺”的大小一直为m
			i++;			
		}
		printf("%lld\n",sum);
	}
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值