Train Seats Reservation 2017ACM南宁网络赛

来源:互联网 发布:淘宝买手机靓号靠谱吗 编辑:程序博客网 时间:2024/05/22 08:06

传送门:Train Seats Reservation


题目大意:有编号为从1~100的火车站,现在有人要买票,告诉你n组信息,包括起点和终点火车站的编号以及需要多少个座位,问最少需要准备多少个座位。比如一个人从1~5,另一人从5~10,只需要一个座位就够了。

样例输入

21 10 820 50 2032 30 520 80 2040 90 400

样例输出

2060*

思路:因为车站很少,直接的思路是将每个起点到终点之间的所有火车站的值加上要购买的座位数,然后其中最大的值就是结果。也可以进一步化简一下,只记录起点和重点位置即可,不过起点是加上需要的座位数,终点则是减去需要的座位数,然后求前缀和并在求前缀和的过程中确定前缀和的最大值。


#include<bits/stdc++.h>int main(){int i,n,a,b,c,sum,max,cnt[110];while(~scanf("%d",&n)&&n){memset(cnt,0,sizeof(cnt));for(i=0;i<n;i++){scanf("%d%d%d",&a,&b,&c);cnt[a]+=c; //起点加上座位数 cnt[b]-=c; //终点减去座位数 }sum=0;max=0;for(i=1;i<101;i++){sum+=cnt[i]; //前缀和 if(sum>max) max=sum; //前缀和的最大值 }printf("%d\n",max);}printf("*\n");return 0;}

阅读全文
1 0