CF1250C Trip to Saint Petersburg
思路
线段树入门题。
不妨固定一个右端点 \(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;
}
CF1250C Trip to Saint Petersburg的更多相关文章
- Codeforces1250C Trip to Saint Petersburg 线段树
题意 有个人要去圣彼得堡旅游,在圣彼得堡每天要花\(k\)块钱,然后在圣彼得堡有\(n\)个兼职工作\(l_i,r_i,p_i\),如果这个人在\(l_i\)到\(r_i\)这个时间段都在圣彼得堡,那 ...
- 2019-2020 ICPC, NERC, Southern and Volga Russian Regional Contest
目录 Contest Info Solutions A. Berstagram B. The Feast and the Bus C. Trip to Saint Petersburg E. The ...
- Using Headless Mode in the Java SE Platform--转
原文地址: By Artem Ananiev and Alla Redko, June 2006 Articles Index This article explains how to use ...
- UI中经常出现的下拉框下拉自动筛选效果的实现
小需求是当你在第一个下拉框选择了国家时,会自动更新第二个省份的下拉框,效果如下 两个下拉选择Html如下: <select id="country_select"> & ...
- uva 1605 building for UN ——yhx
The United Nations has decided to build a new headquarters in Saint Petersburg, Russia. It will have ...
- python爬虫爬取全球机场信息
--2013年10月10日23:54:43 今天需要获取机场信息,发现一个网站有数据,用爬虫趴下来了所有数据: 目标网址:http://www.feeyo.com/airport_code.asp?p ...
- The 50 Most Essential Pieces of Classical Music
1. Die Zauberflöte ("The Magic Flute"), K. 620: Overture London Philharmonic Orchestra 7:2 ...
- Kettle ETL 来进行mysql 数据同步——试验环境搭建(表中无索引,无约束,无外键连接的情况)
今天试验了如何在Kettle的图形界面(Spoon)下面来整合来mysql 数据库中位于不同数据库中的数据表中的数据. 试验用的数据表是customers: 第三方的数据集下载地址是:http://w ...
- UVa1605 - Building for UN(构造法)
UVA - 1605 Time Limit: 3000MS Memory Limit: Unknown 64bit IO Format: %lld & %llu Description ...
- UVA1605-Building for UN(思维)
Problem UVA1605-Building for UN Accept: 398 Submit: 2303Time Limit: 10000 mSec Problem Description ...
随机推荐
- 轻松玩转sed
sed处理文本方法 1.文本或管道输入 2.读入一行到模式控件 3.sed命令处理 4.输出到屏幕 所以 sed是一个流处理编辑器 sed一次处理一行内容 sed不改变文件内容(可以通过重定向改变文件 ...
- 在Windows模拟器中使用LVGL8.3
引言 LVGL是一个跨平台.轻量级.易于移植的图形库.也因其支持大量特性和其易于裁剪,配置开关众多,且版本升级较快,不同版本之间存在一定的差异性,相关的使用教程有一定的滞后性,由于缺少最新版本的中文教 ...
- HCIE Routing&Switching之MPLS基础理论
技术背景 90年代初期,互联网流量快速增长,而由于当时硬件技术的限制,路由器采用最长匹配算法逐跳转发数据包,成为网络数据转发的瓶颈:于是快速路由技术成为当时研究的一个热点:在各种方案中,IETF确定了 ...
- 大前端html基础学习03-定位锚点透明
一.position 定位属性和属性值position 定位属性,检索对象的定位方式:语法:position:static /absolute/relative/fixed/sticky/unset/ ...
- 单点登录系统使用Spring Security的权限功能
背景 在配置中心增加权限功能 目前配置中心已经包含了单点登录功能,可以通过统一页面进行登录,登录完会将用户写入用户表 RBAC的用户.角色.权限表CRUD.授权等都已经完成 希望不用用户再次登录,就可 ...
- TypeScript 之 控制流分析(Control Flow Analysis)
控制流分析(Control Flow Analysis) 描述: CFA 几乎总是采用联合,基于代码逻辑去减少联合里面的类型数量. 大多数时候,CFA 在自然的JavaScript布尔逻辑中工作,但是 ...
- linux-微服务-jar包部署指令
1 orderservice docker build -t orderservice . docker run -d -p 8084:8084 --name orderservice orderse ...
- 软件工程大作业——“你帮我助”软件开发v2.0
项目简介 在疫情管控期间,很多物资由于信息不对称,不能达成资源的有效分配,尽管这样的事件已经基本不会在新冠疫情的场景中出现,但是开发出一个物品交换的公开信息平台在任何一个社区中都是有必要的,这是构建完 ...
- vue中mixins(混入)的用法
vue中mixin的使用详解 混入 (mixin) 提供了一种非常灵活的方式,来分发 Vue 组件中的可复用功能.一个混入对象可以包含任意组件选项.当组件使用混入对象时,所有混入对象的选项将被&quo ...
- Windows下jdk安装与卸载-超详细的图文教程
jdk安装 下载jdk 由于现在主流就是jdk1.8,所以这里就下载jdk1.8进行演示.官方下载地址:https://www.oracle.com/java/technologies/downloa ...