标签:
给你一个数组,初始值都是0,然后有N个操作,每次在一段区间L,R上加W,操作完后,求出这个数组中最大值是多少?
多组样例,一个数字N表示N个操作,接下来N个数字L,R, W,表示给区间L,R加W,(1 <= L, R, W <= 100000。0 <= N <= 100000)
一个数字代表答案
3
1 2 1
1 3 2
1 3 4
4
1 1 2
2 2 4
3 3 1
4 4 5
0
7 5 0
这题要好好的记录一下,也可以这么玩儿~
(为什么听过一遍题解,还和第一次见差不多~
#include<iostream> #include<cstring> #include<cstring> using namespace std; #define N 100010 int main() { int n, l, r, w, a[N]; while(cin >> n) { int ans = 0, maxx = 0;; memset(a, 0, sizeof(a)); if(n == 0) { cout << n << endl; break; } for(int i = 0; i < n; i++) { cin >> l >> r >> w; ans = ans > r ? ans : r; a[l] += w; a[r+1] -= w; } for(int i = 1; i <= ans; i++) { a[i] += a[i-1]; if(a[i] > maxx) maxx = a[i]; } cout << maxx << endl; } return 0; }
标签:
原文地址:http://www.cnblogs.com/Tinamei/p/4661959.html