贪心+差分的题目:gaming
原题链接
题目描述
“漆黑的夜晚”是一位游戏大神。他玩的游戏共有 n 个挑战房间,和 m 个 debuff。他非常强,只要不是带着所有的 debuff,他都能打过 boss 获得胜利。
进入第 ii 个房间会使他带上编号在 [ l i , r i ] [l_i,\,r_i] [li,ri]上的所有 debuff,并获得 s i s_i si 积分。如果多次获得编号为 x 的 debuff,视为身上带有,但仅带有一个。他想要知道,在自己能打过 boss(即身上没有集满所有 m 个 debuff)的情况下,他能获得的最大积分是多少?
输入样例
4 5
1 3 30
2 2 40
2 5 80
2 4 60
输出样例
180
算法
(贪心 + 差分)
本题要求求出获得积分的最大值,但又不能获得所有的 debuff,同时我们观察数据给出:积分 s i s_i si 必然是整数,所以我们就可以发现获得的 debuff 越多越好,只要不达到 m 个debuff即可,也就是 m - 1 个debuff 最好。
所以我们可以先算出所有的 debuff 积分的和,然后一一减去每一个 debuff 编号所在的积分总值,取其中最大值。
而每一个 debuff 所在的积分总值就可以用 对区间差分的方式 快速求出
C++ 代码
时间复杂度 O ( m a x ( n , m ) ) O(max(n,m)) O(max(n,m))
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
typedef long long ll;
typedef pair<ll, ll> PLL;
const int N = 1e6 + 10,INF = 0x3f3f3f3f;
ll val[N];int main()
{int n,m;cin >> n >> m;ll sum = 0;for (int i = 1;i <= n;i ++ ) {ll l,r,s;cin >> l >> r >> s;val[l] += s,val[r + 1] -= s;sum += s;}ll res = 0;for (int i = 1;i <= m;i ++) val[i] = val[i] + val[i - 1];for (int i = 1;i <= m;i ++) {res = max(sum - val[i],res);}cout << res << '\n';return 0;
}
贪心+差分的题目:gaming相关推荐
- 阿里春招笔试2020.3.27(贪心/差分/概率)
申明:大概题意是从牛客网讨论区嫖的,题目的输入.输出以及数据数据范围也有些不知,大家看看思路就好,这些细节就不管了QAQ.有错欢迎纠正~ 3.27 题目一(贪心) 给定字符串s1,s2,求从s1变为s ...
- 中石油训练赛 - 围栏翻新(思维+贪心+差分)
题目描述 小明的破旧围栏又要喷涂油漆了.围栏由N个木板构成,每个宽度都为1cm,但是高度各不相同.他给自己买了一个喷漆机器,喷涂头恰好也是1cm宽. 小明的喷漆机器是直接喷射的,因此喷头的每一个部位必 ...
- jzoj5698-[gdoi2018day1]密码锁【贪心,差分】
正题 题目大意 nnn个数字,每次可以让一个区间加或减111.然后数字是一个[0,m−1][0,m-1][0,m−1]的循环,求最少次数让所有数字变成000 解题思路 我们做一个%m\%m%m意义下的 ...
- 2014年TI杯邀请赛——简易高速差分探头 题目解析
TI倍邀请赛马上就要开始了,多做几个题练练手,所以以后几期都是关于TI杯邀请赛的,敬请期待. 一.题目再现(完整题目已经上传) 任务:设计并制作一个简易有源高速差分示波器探头,实现差分输入.单端输出功 ...
- Too Many Segments (easy version) CodeForces - 1249D1(贪心+差分)
题意 给多组线段,而每一个点的覆盖次数不超过K,每次可去除一个线段,问最少去多少线段以及线段的位置. The only difference between easy and hard version ...
- 168. Leetcode 134. 加油站 (贪心算法-模拟题目)
class Solution:def canCompleteCircuit(self, gas: List[int], cost: List[int]) -> int:cur_rest_acc ...
- 159. Leetcode 122. 买卖股票的最佳时机 II (贪心算法-股票题目)
class Solution:def maxProfit(self, prices: List[int]) -> int:result = 0for i in range(1,len(price ...
- 158. Leetcode 121. 买卖股票的最佳时机 (贪心算法-股票题目)
class Solution:def maxProfit(self, prices: List[int]) -> int:low, max_profit = float("inf&qu ...
- 157. Leetcode 674. 最长连续递增序列 (贪心算法-进阶题目)
class Solution:def findLengthOfLCIS(self, nums: List[int]) -> int:ans, start = 0, 0for i in range ...
最新文章
- 说说你对 HTML 语义化的理解?
- 什么是(功能)反应式编程?
- Java学习笔记(一)--JDK环境
- 电纸书kindle相关产品调研(没搞完)
- how is metadata got - DB table iwfndi_med_srh and IWFNDCL_MGW_REQUEST_MANAG
- bootstrap table 的简单Demo
- 移除Java对象中的属性_在java对象中添加和删除属性
- 因策划进军餐饮等虚假营销 TikTok前营销主管被开除
- 计算机基础0018,自学考试计算机用基础 0018复习资料.doc
- 12v电源正负极区分_弱电工程UPS电源如何安装?如何配置计算?故障如何处理?...
- mybatis 高级映射和spring整合之与Spring整合(6)
- 苹果Mac 3D 建模渲染软件:Vectorworks
- 公司打卡少几秒分析--学会拒绝,学会选择
- PHP面向对象学习(一)
- php 用户之间通信,PHP,javascript,ajax-2位用户之间的通信
- linux下测试权限,linux 文件权限
- Python 爬虫案例
- 百度杀毒软件2013低调发布
- 【Android安全】JEB技巧汇总
- RadAsm:object file not found