题目传送门

思路

线段树入门题。

不妨固定一个右端点 \(r\),把所有右端点小于 \(r\) 的区间都在 \(1\) 至此区间的左端点处 update 一个 \(p\),然后每次都给区间 \(1\) 至 \(i\) update 一个 \(-k\),最后查询区间 \(\max\) 即可。

代码

//A tree without skin will surely die.
//A man without face is invincible.
#include<bits/stdc++.h>
using namespace std;
#define int long long
int const N=2e5+10;
struct answ{int first,second,id;};
struct node{int x,y;};
vector<answ>a[N];
vector<int>anss;
struct Segment_Tree{
#define ls (x<<1)
#define rs (x<<1|1)
#define mid ((l+r)>>1)
int c[N<<2],lazy[N<<2],pl[N<<2];
inline void build(int x,int l,int r){
if (l==r){pl[x]=l;return;}
build(ls,l,mid);build(rs,mid+1,r);
pl[x]=pl[ls];
}
inline void pushdown(int x){
c[ls]+=lazy[x];c[rs]+=lazy[x];
lazy[ls]+=lazy[x];lazy[rs]+=lazy[x];
lazy[x]=0;
}
inline void pushup(int x){
if (c[ls]>c[rs]) c[x]=c[ls],pl[x]=pl[ls];
else c[x]=c[rs],pl[x]=pl[rs];
}
inline void update(int x,int l,int r,int ll,int rr,int v){
if (l==r){pl[x]=l;}
if (ll<=l && r<=rr){c[x]+=v,lazy[x]+=v;return;}
pushdown(x);
if (ll<=mid) update(ls,l,mid,ll,rr,v);
if (mid<rr) update(rs,mid+1,r,ll,rr,v);
pushup(x);
}
inline node query(int x,int l,int r,int ll,int rr){
if (l==r) pl[x]=l;
if (ll<=l && r<=rr) return {c[x],pl[x]};
pushdown(x);node res;res.x=res.y=0;
if (ll<=mid) res=query(ls,l,mid,ll,rr);
if (mid<rr){
node qq=query(rs,mid+1,r,ll,rr);
if (qq.x>res.x) res=qq;
}
pushup(x);
return res;
}
}T;
signed main(){
int n,k;cin>>n>>k;int maxr=0;
for (int i=1;i<=n;++i){
int l,r,p;cin>>l>>r>>p;
a[r].push_back({l,p,i});maxr=max(maxr,r);
}
T.build(1,1,maxr);
int ans=0,ansl=0,ansr=0;
for (int i=1;i<=maxr;++i){
T.update(1,1,maxr,1,i,-k);
for (auto j:a[i]) T.update(1,1,maxr,1,j.first,j.second);
node reply=T.query(1,1,maxr,1,i);
if (reply.x>ans) ans=reply.x,ansl=reply.y,ansr=i;
}
//输出
return 0;
}

最新文章

  1. 64位下pwntools中dynELF函数的使用
  2. CentOS7 学习笔记
  3. Linux sendmail发送邮件失败诊断案例(一)
  4. 20.SqlServer中if跟循环语句
  5. swift 判断字符串长度
  6. Git远程和分支管理
  7. 用phpcms开发模块时中文乱码问题
  8. [转]PDO防注入原理分析以及使用PDO的注意事项
  9. PHP stat() 函数 返回关于文件的信息。
  10. fluentd正则表达式
  11. Codeforces Round #263 (Div. 2)
  12. Asp.net Core 微信公众号开发系列
  13. 安卓TV开发(四) 实现主流智能TV视频播放器UI
  14. Java实现把图片转成字符画
  15. js权威指南笔记
  16. 《Effective Java 第三版》目录汇总
  17. vue中的axios
  18. Python 通过打码平台实现验证码
  19. Codeforces Round #303 (Div. 2)E. Paths and Trees 最短路
  20. ossec兼容的操作系统

热门文章

  1. jmeter 从多个数中随机取一个值的方法
  2. 基于Nginx搭建WebDAV服务
  3. 现代 CSS 高阶技巧,像 Canvas 一样自由绘图构建样式!
  4. python 之集合(set)
  5. VC实例和VM实例的区别!!!
  6. vue 中安装并使用echart
  7. Asp-Net-Core权限认证
  8. Mac对文件夹加密
  9. Winform DataGridViewTextBoxCell 编辑添加右键菜单,编辑选中文本
  10. [Codeforces Round #794 (Div. 2)] D. Linguistics