列表

详情


NC236982. Gaming

描述

“漆黑的夜晚”是一位游戏大神。他玩的游戏共有 n 个挑战房间,和 m 个 debuff。他非常强,只要不是带着所有的 debuff,他都能打过 boss 获得胜利。

进入第 i 个房间会使他带上编号在  上的所有 debuff,并获得 s_i 积分。如果多次获得编号为 x 的 debuff,视为身上带有,但仅带有一个。他想要知道,在自己能打过 boss(即身上没有集满所有 m 个 debuff)的情况下,他能获得的最大积分是多少?

输入描述

第一行两个正整数 ,表示房间的个数和 debuff 的个数。

接下来 n 行,每行三个正整数 ,含义见题面。

输出描述

一行一个整数,表示他能获得的最大的积分。

示例1

输入:

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

输出:

180

示例2

输入:

1 3
1 3 114514

输出:

0

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C++(clang++ 11.0.1) 解法, 执行用时: 863ms, 内存消耗: 8248K, 提交时间: 2022-08-12 21:09:53

#include<iostream>
using namespace std;
long long sz[1000006], ans, sum=1e18;
int l, r, s;
int n, m;
int main() {
	cin>>n>>m;
	for(int i=1; i<=n; ++i) {
		cin>>l>>r>>s;
		sz[l]+=s; sz[r+1]-=s;
		ans+=s;
	}
	for(int i=1; i<=m; ++i) {
		sz[i]+=sz[i-1];
		sum=min(sum, sz[i]);
	}
	cout<<ans-sum;
}

上一题