2019 GDUT Rating Contest #I A. The Bucket List 题目见 :
http://codeforces.com/group/NVaJtLaLjS/contest/238166/problem/A
题目大意: n头牛,每头牛i需要在一定时间内(si~ti)使用bi个桶,求总共最少使用多少个桶。
思路: 找到所有同一时间内最多使用的桶数目即是总共使用的桶数目。
一次优化: 【# 2019 GDUT Rating Contest #I A. The Bucket List】使用差分,f[i]为差分数组,即可在O(n)时间内求出所有时间中最多使用的桶数目。
实现:
#include
#include
#include
using namespace std;
int main()
{
int f[1008];
//差分数组
int n,s,t,d,i,j,maxt=0,ans=0;
scanf("%d",&n);
for (i=0;
i<=1000;
i++) f[i]=0;
//初始化差分数组
for (i=1;
i<=n;
i++)
{
scanf("%d %d %d",&s,&t,&d);
f[s]+=d;
f[t+1]-=d;
maxt=max(t,maxt);
} for (i=1;
i<=maxt;
i++)
{
f[i]+=f[i-1];
ans=max(ans,f[i]);
}
printf("%d\n",ans);
return 0;
}
推荐阅读
- 题解|【HNOI2017】大佬-dalao
- 2019 GDUT Rating Contest #II 这是群题解,七篇!!!
- # 2019 GDUT Rating Contest #I H. Mixing Milk
- # 2019 GDUT Rating Contest #I G. Back and Forth
- 2019 GDUT Winter Personal Training Contest III (Div. 2) A题 QAQ 题解
- 2019 GDUT Winter Personal Training Contest I (Div. 2) A. Protect Sheep
- 题解|题解 | K-ary Heap-2019牛客暑期多校训练营第六场F题
- ACM|[dsu] codeforces 375D. Tree and Queries
- 题解|[BZOJ3817] Sum