[题解] A. The Bucket List (待更名)
Posted kaidora
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[题解] A. The Bucket List (待更名)相关的知识,希望对你有一定的参考价值。
http://codeforces.com/group/NVaJtLaLjS/contest/238166/problem/A
输入N表示N只牛要挤奶(1≤N≤100),接下来有N行;
分别表示开始、结束时间(1~1000),以及需要多少桶(1~10)。
问:最多要准备多少桶?
示例:
Input:
3 4 10 1 8 13 3 2 6 2
Output:
4
因为时间范围只有1000,这里只需要维护一个数组buckets[1001]就行。
下标表示时间,值表示这个时间点需要多少个桶。
buckets[1001]={0}; //初始化为0
对于第一个数据4,10,1,表示在第4至10分钟占用了1个桶,
那么从buckets[4]到buckets[10],每个都要+1;
8,13,3,第8到13分钟占用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 ",max); 25 /* 26 printf("i "); 27 for(int i=1;i<=13;i++) 28 printf("%d ",i); 29 puts(""); 30 printf("B[i] "); 31 for(int i=1;i<=13;i++) 32 printf("%d ",buckets[i]); 33 puts(""); 34 */ 35 return 0; 36 }
以上是关于[题解] A. The Bucket List (待更名)的主要内容,如果未能解决你的问题,请参考以下文章
[2016-3-10]OMG美语每日笔记-Do you have a place that you really wanna visit on the top of your bucket list?
Good Bye 2018 A. New Year and the Christmas Ornament
Lintcode372 Delete Node in the Middle of Singly Linked List solution 题解
Codeforces Round #286 (Div. 1) A. Mr. Kitayuta, the Treasure Hunter DP