列表

详情


NC14705. 良神吃点心

描述

良神爱吃甜点,如果他吃不到甜点的话就会很暴躁!现在桌子上摆着一排n个点心,每个点心具有一个甜度ai,良神一次能吃连续的一些点心,但是他一次不能吃总甜度和超过m(可以等于m),否则他就长不高啦!良神想要知道他最少吃几次才能把这些点心都吃完。

输入描述

第1行输入两个整数n,m,代表点心数量和一次可以吃的总甜度上限。
第2行输入n个整数,第i个整数代表第i个点心的甜度ai
数据保证:0<n≤100,0<ai≤100,m≥ai的最大值。

输出描述

输出一行,一个整数,代表良神吃的最少次数。

示例1

输入:

5 6
4 2 4 5 1

输出:

3

说明:

良神可以按照[4 2][4][5 1]的方式吃点心,最少需要3次吃完。

示例2

输入:

5 6
6 6 6 6 6

输出:

5

说明:

良神可以按照[6][6][6][6][6]的方式吃点心,最少需要5次吃完。

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C++ 解法, 执行用时: 3ms, 内存消耗: 376K, 提交时间: 2021-05-30 17:55:29

#include<iostream>
using namespace std;
int main()
{
	int m,n,i,a[100];
	cin>>n>>m;
	for(i=0;i<n;i++)
	{
		cin>>a[i];
	}
	int s=0,t=1;
	for(i=0;i<n;i++)
	{
		s+=a[i];
		if(s>m)
		{
			s=a[i];
			t++;
		}
	}
	cout<<t<<endl;
}

Python3(3.5.2) 解法, 执行用时: 26ms, 内存消耗: 3560K, 提交时间: 2019-12-07 16:29:02

n,m=map(int,input().split())
a=list(map(int,input().split()[:n]))
count,s=0,0
for i in range(n):
    if s+a[i]<=m:
        s+=a[i]
    else:
        count+=1
        s=a[i]
print(count+1)

上一题