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