paint-Solution

Problem

题目描述

Picasso 有 \(n\) 种颜色,他能画出 \(m\) 个人物,其中第 \(i\) 个人物需要编号 \([l_i,r_i]\) 中的色彩,艺术价值为 \(a_i\)
现在他想要至少有一种色彩不被使用,你需要求出画中人物艺术价值的和的最大值。

输入格式

第一行两个数 \(n, m\)
接下来 \(n\) 行,第 \(i\) 行三个整数 \(l_i, r_i,a_i\)

输出格式

一行一个整数表示答案。

样例

input

4 5
1 3 30 
2 2 40 
2 5 80 
2 4 60

output

180

数据范围

Subtask 1 : (20pts) \(n, m \leq 15\)
Subtask 2 : (30pts) \(n, m \leq 5000\)
Subtask 3 : (50pts) \(n, m \leq 10^5\)
对于所有数据都满足 \(1 \leq n, m \leq 10^5, 1\leq a_i\leq 10^9\)

Solution

思路

显然我们看到这种题就是贪心,选取一个点使得让一个点的价值最小,那么在除掉它锁在区间的价值,用差分来做

代码

/*
  Paper_114514@163.com
*/
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
ll ChaFen[100005];
int n, m;
signed main() {
  freopen("paint.in", "r", stdin), freopen("paint.out", "w", stdout);
  cin >> n >> m;
  for (int i = 1, l, r, val; i <= n; ++i) {
    cin >> l >> r >> val;
    ChaFen[1] += val;
    ChaFen[l] -= val;
    ChaFen[r + 1] += val;
  }
  ll now = 0, ans = 0;
  for (int i = 1; i <= m; ++i) now += ChaFen[i], ans = max(ans, now);
  cout << ans << endl;
  return 0;
}

THE END

posted @ 2022-10-09 09:40  georegyucjr  阅读(34)  评论(0)    收藏  举报