洛谷.T21778.过年(线段树 扫描线)
/*
操作按左端点排个序 依次进行即可
不是很懂 为什么不写Build 而在Add时改mp[rt]=p 会WA(too short on line 251..)
找到Reason了。。Modify下界写错
那么为什么单点修改正确性会被下界影响。。
又找到Reason了。。数据有0 mmp
*/
#include<cstdio>
#include<cctype>
#include<algorithm>
#define gc() getchar()
const int N=1e5+5;
int n,m,maxn,pos;
struct Opt
{
int p,k,v;
inline bool operator <(const Opt &a)const {return p<a.p;}
}A[N<<1];
struct Seg_Tree
{
int mx[N<<2],mp[N<<2];
// std::pair<int,int> mx[N<<2];
inline void PushUp(int rt)
{
if(mx[rt<<1]>=mx[rt<<1|1])
mx[rt]=mx[rt<<1], mp[rt]=mp[rt<<1];
else
mx[rt]=mx[rt<<1|1], mp[rt]=mp[rt<<1|1];
// mx[rt]=std::max(mx[rt<<1],mx[rt<<1|1]);//No1相等时按第二关键字升序,初始时取反即可
}
// void Build(int l,int r,int rt)
// {
// if(l==r) mx[rt]=0, mp[rt]=l;//mx[rt]=std::make_pair(0,-l);
// else
// {
// int m=l+r>>1;
// Build(l,m,rt<<1), Build(m+1,r,rt<<1|1);
// PushUp(rt);
// }
// }
void Modify_Add(int l,int r,int rt,int p,int v)
{
if(l==r) mx[rt]+=v, mp[rt]=p;
else
{
int m=l+r>>1;
if(p<=m) Modify_Add(l,m,rt<<1,p,v);
else Modify_Add(m+1,r,rt<<1|1,p,v);
PushUp(rt);
}
}
}t;
inline int read()
{
int now=0,f=1;register char c=gc();
for(;!isdigit(c);c=gc()) if(c=='-') f=-1;
for(;isdigit(c);now=now*10+c-'0',c=gc());
return now*f;
}
int main()
{
#ifndef ONLINE_JUDGE
freopen("1.in","r",stdin);
freopen("2.out","w",stdout);
#endif
n=read(),m=read();
int mn=1e5,mx=1;
for(int i=0;i<m;++i)
{
A[i<<1].p=read(), A[i<<1|1].p=read()+1,
A[i<<1].k= A[i<<1|1].k= read(),
A[i<<1].v=1, A[i<<1|1].v=-1;
mn=std::min(A[i<<1].k,mn), mx=std::max(A[i<<1].k,mx);
}
std::sort(A,A+(m<<1));
A[m<<1].p=n+1;
// t.Build(mn,mx,1);
int cnt=0;
// printf("%d %d\n",mn,mx);
for(int i=1;i<=n;++i)
{
// while(A[cnt].p<=i) t.Modify_Add(0,mx,1,A[cnt].k,A[cnt].v),++cnt;
while(A[cnt].p<=i) t.Modify_Add(mn,mx,1,A[cnt].k,A[cnt].v),++cnt;
// if(t.mx[1].first) printf("%d\n",-t.mx[1].second);
if(t.mx[1]) printf("%d\n",t.mp[1]);
else puts("-1");
}
return 0;
}
洛谷.T21778.过年(线段树 扫描线)的更多相关文章
- 洛谷P3373 [模板]线段树 2(区间增减.乘 区间求和)
To 洛谷.3373 [模板]线段树2 题目描述 如题,已知一个数列,你需要进行下面两种操作: 1.将某区间每一个数加上x 2.将某区间每一个数乘上x 3.求出某区间每一个数的和 输入输出格式 输入格 ...
- 洛谷T21778 过年
题目描述 有 n(1 \leq n \leq 10^5)n(1≤n≤105) 个小朋友,过年了,要发放 m(1 \leq m \leq 10^5)m(1≤m≤105) 次礼物. 每次发放,会给出三个参 ...
- 洛谷 [T21778] 过年
离线扫描线+查分+线段树 我们发现,这个题的询问都是离线的,所以我们尝试用离线扫描线的方法来处理 对于每一次操作,我们维护一个差分数组, 在询问的时候,我们用一根扫描线,从左往右扫,并用线段树维护,每 ...
- 【洛谷】【线段树】P1471 方差
[题目背景:] 滚粗了的HansBug在收拾旧数学书,然而他发现了什么奇妙的东西. [题目描述:] 蒟蒻HansBug在一本数学书里面发现了一个神奇的数列,包含N个实数.他想算算这个数列的平均数和方差 ...
- 【洛谷】【线段树】P1047 校门外的树
[题目描述:] 某校大门外长度为L的马路上有一排树,每两棵相邻的树之间的间隔都是1米.我们可以把马路看成一个数轴,马路的一端在数轴0的位置,另一端在L的位置:数轴上的每个整数点,即0,1,2,……,L ...
- 【洛谷】【线段树】P1886 滑动窗口
[题目描述:] 现在有一堆数字共N个数字(N<=10^6),以及一个大小为k的窗口.现在这个从左边开始向右滑动,每次滑动一个单位,求出每次滑动后窗口中的最大值和最小值. [输入格式:] 输入一共 ...
- 【洛谷】【线段树】P3353 在你窗外闪耀的星星
[题目描述:] /* 飞逝的的时光不会模糊我对你的记忆.难以相信从我第一次见到你以来已经过去了3年.我仍然还生动地记得,3年前,在美丽的集美中学,从我看到你微笑着走出教室,你将头向后仰,柔和的晚霞照耀 ...
- 洛谷P5280 [ZJOI2019]线段树
https://www.luogu.org/problemnew/show/P5280 省选的时候后一半时间开这题,想了接近两个小时的各种假做法,之后想的做法已经接近正解了,但是有一些细节问题理不 ...
- 洛谷 - P1198 - 最大数 - 线段树
https://www.luogu.org/problemnew/show/P1198 要问区间最大值,肯定是要用线段树的,不能用树状数组.(因为没有逆元?但是题目求的是最后一段,可以改成类似前缀和啊 ...
随机推荐
- 【转】Python数据类型之“数字(numerics)”
[转]Python数据类型之“数字(numerics)” 上一节内容说的是“Python基本语法”,本节主要讲下Python中的数据类型. 存储在内存中的数据通常有两个属性: 在内存中的存放位置:这个 ...
- How to Repair GRUB2 When Ubuntu Won’t Boot
Ubuntu and many other Linux distributions use the GRUB2 boot loader. If GRUB2 breaks—for example, if ...
- svn的常用命令
svn :看log.版本库.增删.提交 (1)svn up //代码更新到最新版本. (2)svn checkout //将代码checkout出来. (3)svn revert -R ./ //将代 ...
- rabbitmq 源码安装
官网地址:rabbitmqhttp://www.rabbitmq.com/releases/rabbitmq-server/官网地址:erlanghttp://erlang.org/download/ ...
- 企业内部在centos7.2系统中必杀技NTP时间服务器及内网服务器时间同步(windows和linux客户端同步)
网络时间协议NTP(Network Time Protocol)是用于互联网中时间同步的标准互联网协议.NTP的用途是把计算机的时间同步到某些时间标准.目前采用的时间标准是世界协调时UTC(Unive ...
- DOS命令大全(转)
dos命令大全 CMD是command的缩写,是windows环境下的虚拟DOS窗口,提供有DOS命令,功能强大,如果你以前学习过DOS操作,那就小儿科了.是基于Windows的命令行窗口,在开始-- ...
- 请手动释放你的资源(Please release resources manually)
作者: Laruence( ) 本文地址: http://www.laruence.com/2012/07/25/2662.html 转载请注明出处 我从来不认为这个问题是个问题, 直到昨天. 昨 ...
- 红包外挂史及AccessibilityService分析与防御
最近在做一个有趣的外挂的小玩意,前提我们要了解一个重要的类AccessibilityService 转载请注明出处:https://lizhaoxuan.github.io 前言 提起Accessib ...
- 深度学习Bible学习笔记:第二、三章 线性代数 概率与信息论
推荐资源: <线性代数的本质>:Essence of linear algebra 视频教程 <数学之美>(科普类书籍),吴军系列书籍都不错. 易向军<大嘴巴漫谈数据挖掘 ...
- strchr()的用法
strchr()主要有2个最有用的用法: 第一个:搜索字符串在另一字符串中的第一次出现.并返回剩余的部分 $str = "hello_chrdai_1993"; $not_incl ...