Codeforces Round #249 (Div. 2) A题

本文介绍了一个关于公交车调度的问题,每辆公交车有载客上限,乘客按团队排队上车。如果一个团队无法全部上车,则等待下一班车。文章通过具体实例展示了如何计算所需的公交车数量。
链接:http://codeforces.com/contest/435/problem/A
 
A. Queue on Bus Stop
time limit per test
1 second
memory limit per test
256 megabytes
input
standard input
output
standard output

It's that time of the year when the Russians flood their countryside summer cottages (dachas) and the bus stop has a lot of people. People rarely go to the dacha on their own, it's usually a group, so the people stand in queue by groups.

The bus stop queue has n groups of people. The i-th group from the beginning has ai people. Every 30 minutes an empty bus arrives at the bus stop, it can carry at most m people. Naturally, the people from the first group enter the bus first. Then go the people from the second group and so on. Note that the order of groups in the queue never changes. Moreover, if some group cannot fit all of its members into the current bus, it waits for the next bus together with other groups standing after it in the queue.

Your task is to determine how many buses is needed to transport all n groups to the dacha countryside.

Input

The first line contains two integers n and m (1 ≤ n, m ≤ 100). The next line contains n integers: a1, a2, ..., an (1 ≤ ai ≤ m).

Output

Print a single integer — the number of buses that is needed to transport all n groups to the dacha countryside.

Sample test(s)
input
4 3
2 3 2 1
output
3
input
3 4
1 2 1
output
1

00000000000000000000000000000000000000000000000000000000000000
题意是说几伙人上公交车,每一辆公交车都有限载的量,且,每一伙人如果不能全部上车就等下一辆
问需要多少量车

 1 #include <stdio.h>
 2 #include <string.h>
 3 #include <stdlib.h>
 4 
 5 int main()
 6 {
 7     int n,m,i,j;
 8     int str[105];
 9     while(scanf("%d%d",&n,&m)!=EOF)
10     {
11         for(i=0; i<n; i++)
12             scanf("%d",&str[i]);
13         int bus=0,mark;
14         for(i=0; i<n; i++)
15         {
16             if(str[i] == m)
17                 bus++;
18             else
19             {
20                 int sum=str[i];
21                 //mark=i;
22                 for(j=i+1; j<n; j++)
23                 {
24                     sum += str[j];
25                     if(sum == m)
26                     {
27                         //j--;
28                         i=j;
29                         bus++;
30                         sum=0;
31                         break;
32                     }
33                     if(sum > m)
34                     {
35                         j--;
36                         i=j;
37                         bus++;
38                         sum=0;
39                         break;
40                     }
41                 }
42                 if(i == n-1 && sum > 0)
43                     bus++;
44             }
45         }
46         printf("%d\n",bus);
47     }
48 }

 

转载于:https://www.cnblogs.com/ccccnzb/p/3900292.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值