码迷,mamicode.com
首页 > 其他好文 > 详细

石大ACM2587解题报告

时间:2015-03-03 14:53:53      阅读:165      评论:0      收藏:0      [点我收藏+]

标签:

2014石大校决赛A题。

Description

       一年一度的校赛开始了,小武虽然不需要参赛,却还得参与赛前的题目测试工作。为了保证比赛题目数据无误,唐大官要求小武必须把每一个题都做一遍— —||。在无法抗命的情况下,小武决定采用“顺序做题法”,即从第一题开始做,做完之后再做第二题,然后是第三题,以此类推……由于小武课程比较多,时间和精力有限,因此每天最多只能做K分钟的题目,且每个题目只能在一天内做完(如果有一个题第一天只完成了一部分,则第二天必须从头开始做此题,因为他已经看不懂自己前一天写的代码了=,=)。现在已知小武做每个题所需要的时间,问小武最少需要多少天才能完成所有的题目。

   

Input

 

 

第一行一个整数TT<50),表示数据组数。

接下来有T行数据。对每组数据,先读入两个数N(0<N<=104)、K(0<K<=1000),表示有N个题,小武每天最多做题K分钟。接下来是N个数a[0]--a[N-1],分别表示做每个题所需的时间(分钟)。题目保证 0<a[i]<=K(0<=i<=N-1)。

 

Output

 

 

对于每组数据,输出一个数D,表示小武最少需要多少天才能完成所有的题目。

 

Sample Input

2
3 3
1 2 3
3 3
1 3 3

Sample Output

2
3
 1 #include <stdio.h>
 2 void main()
 3 {
 4     int T;
 5     scanf("%d",&T);
 6     int n,k;
 7     while(T--)
 8     {
 9         scanf("%d%d",&n,&k);
10         int a[10000];
11         int num = 0,s=0;               
12         for (int j = 0;j<n;j++)
13         {
14             scanf("%d",&a[j]);
15         }
16         for (int j = 0;j<n;j++) //遍历每个输入
17         {
18             s = s + a[j];        //累加
19             if (s==k)            //若刚好到一天的上限,计数加一,重新累加
20             {
21                 num++;
22                 s=0;
23             }
24             else if (s>k)        //若超过一天的上限,计数加一,把这道题放到后一天,再重新累加
25             {
26                 num++;
27                 s=a[j];
28             }
29         }    
30         if(s>0)                    //所有数都遍历完了,如果有题目放到了后一天,则天数加一
31             num++;
32         printf("%d\n",num);
33     }
34 }

 

石大ACM2587解题报告

标签:

原文地址:http://www.cnblogs.com/mengdejia/p/4310855.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!