[ 题解 ] A. The Bucket List (待更名)

http://codeforces.com/group/NVaJtLaLjS/contest/238166/problem/A

 

 


输入N表示N只牛要挤奶(1≤N≤100),接下来有N行;

分别表示开始、结束时间(1~1000),以及需要多少桶(110)。

问:最多要准备多少桶?

 

示例:

Input:

3
4 10 1
8 13 3
2 6 2

Output: 

4

 

因为时间范围只有1000,这里只需要维护一个数组buckets[1001]就行。

下标表示时间,值表示这个时间点需要多少个桶。

buckets[1001]={0};    //初始化为0

 

对于第一个数据4101,表示在第410分钟占用了1个桶,

那么从buckets[4]buckets[10],每个都要+1


8133,第813分钟占用3个桶,

buckets[8]buckets[13]+3


第三数据同理。


这时数组打印出来是这样:

 

i		1	2	3	4	5	6	7	8	9	10	11	12	13	
B[i]	0	2	2	3	3	3	1	4	4	4	3	3	3

 

最终得到全部时间中各时间点需要的桶的数量,取其中最大值即可。

 

被注释的两行是中途废弃的数组,这题其实没有什么复杂的,直接100+1000次暴力循环,不需要记一堆区间去求桶数

 1 #include <stdio.h>
 2 
 3 int N;
 4 //int cows[102][3]={0};
 5 int s,f,b;
 6 int max=0;
 7 int buckets[1002]={0};
 8 int main()
 9 {
10     scanf("%d",&N);
11     for(int n=1;n<=N;n++)
12     {
13 //        scanf("%d%d%d",&cows[n][0],&cows[n][1],&cows[n][2]);
14         scanf("%d%d%d",&s,&f,&b);
15         for(int i=s;i<=f;i++)
16         {
17             buckets[i]+=b;
18         }
19     }
20     for(int i=1;i<=1000;i++)
21     {
22         if( buckets[i]>max )max=buckets[i];
23     }
24     printf("%d\n",max);
25 /*    
26     printf("i\t");
27     for(int i=1;i<=13;i++)
28         printf("%d\t",i);
29     puts("");
30     printf("B[i]\t");
31     for(int i=1;i<=13;i++)
32         printf("%d\t",buckets[i]);
33     puts("");
34 */
35     return 0;
36 }

 

posted @ 2019-02-17 00:02  Kaidora  阅读(290)  评论(0编辑  收藏  举报