洛谷.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 要问区间最大值,肯定是要用线段树的,不能用树状数组.(因为没有逆元?但是题目求的是最后一段,可以改成类似前缀和啊 ...
随机推荐
- [转]HEX文件格式解析
1.前言 本文主要讲述keil MDK 下STM32编译生成的的HEX镜像文件格式.并说明镜像load地址是如何添加进HEX文件的. 2.keil MDK如何在HEX文件中添加load addr 通过 ...
- The videobuf2 API【转】
转自:https://blog.csdn.net/paul_liao/article/details/8986999 The videobuf2 API Author:CJOK Contact:cjo ...
- C# 关于用7zip压缩文件提示win32exception 系统找不到文件解决方案(win7 x64)
网上已经很多这方面的资料了,我就简单的说下好了 为了方便以后的查看 --------------------- 1.需要下载7zSharp:http://7zsharp.codeplex.com/re ...
- 【转】理解*(void**)
#include <stdio.h> int main() { int *p; ; unsigned ; p = &a; printf("%d\n", *p); ...
- eclipse配置JDK
配置JDK 注意:此处配置的是JDK安装路径,不是JRE!!!
- openwrt 添加luci选项
刚刚下载的openwrt trunk版本,安装后没有luci选项,如下图 需要添加luci页面选项. 步骤如下: (1)修改配置文件 .config , 将 CONFIG_FEED_luci is n ...
- saltstack自动化运维系列12配置管理安装redis-3.2.8
一.准备redis自动化配置的文件(即安装一遍redis,然后获取相关文件和配置在salt中执行上线) 1.源码安装redis3.2.8并注册为系统服务 安装依赖yum install -y tcl ...
- S5PV210 NAND Flash
NAND Flash 关于NAND FlashS5PV210的NAND Flash控制器有如下特点:1) 支持512byte,2k,4k,8k的页大小2) 通过各种软件模式来进行NAND Flash的 ...
- Go语言规格说明书 之 结构体类型(Struct types)
go version go1.11 windows/amd64 本文为阅读Go语言中文官网的规则说明书(https://golang.google.cn/ref/spec)而做的笔记,介绍Go语言的 ...
- react之自定义迷你redux的实现
export function createStore(reducer){ let currentState={} let currentListeners=[] function getState( ...