原题
题目大意
题目大概是讲给出n个[si,ti],和bi,s为开始时间,t为结束时间,b为在该时间段内所需求的桶数,b个桶会从s开始一直被占用直到t才回收,问整个过程开始时至少需要备用多少个桶。
题目分析
这道题的数据都很小可以直接暴力。设置一个d数组(时间轴),d[i]的定义为在i这一时刻所需要的桶的量。d数组初始化为0,每次输入一组数据s,t,b,然后用一个循环把d[s]到d[t]的值都加上b。最后只需要在遍历一次d数组找最大值输出即可。
代码:
1 #include <cstdio> 2 #include <cmath> 3 #include <iostream> 4 #include <cstring> 5 #include <algorithm> 6 #include <vector> 7 #include <string> 8 #include <utility> 9 #include <queue> 10 #include <stack> 11 const int INF=0x3f3f3f3f; 12 using namespace std; 13 14 int d[1001]; 15 16 int main() 17 { 18 int n; 19 cin>>n; 20 while(n--) 21 { 22 int s,t,b; 23 cin>>s>>t>>b; 24 for(int i=s;i<=t;i++) 25 d[i]+=b; 26 } 27 int ans=0; 28 for(int i=1;i<=1000;i++) 29 if(d[i]>ans) ans=d[i]; 30 cout<<ans<<endl; 31 return 0; 32 }