题目描述

有 n(1 \leq n \leq 10^5)n(1≤n≤105) 个小朋友,过年了,要发放 m(1 \leq m \leq 10^5)m(1≤m≤105) 次礼物。

每次发放,会给出三个参数 l,r,k(1 \leq l \leq r \leq n, 1 \leq k \leq 10^5)l,r,k(1≤l≤r≤n,1≤k≤105) ,表示给区间 [l, r][l,r] 内的小朋友都发一个礼物 kk 。

所有礼物发放完成后,对于每一个小朋友,回答他接受的礼物中,出现次数最多的礼物是什么。如果有多个,输出编号最小的那个;如果不存在,输出 -1−1 。

输入输出格式

输入格式:

第一行两个整数 n, mn,m ,意义如上所述。

接下来 mm 行,每行三个数 l,r,kl,r,k ,意义如上所述。

输出格式:

一共 nn 行,每行一个数,表示答案。

输入输出样例

输入样例#1: 复制

6 3
1 5 1
2 3 2
3 4 2
输出样例#1: 复制

1
1
2
1
1
-1 思路比较无脑,全是套路类的问题
按照小盆友的序号建权值线段树
对于每个询问差分一下
在树上打标记,记录最大值和最大值的位置
emmm以后要考虑考虑线段树怎么写了,感觉用DFS序不仅内存小,还写着顺手
// luogu-judger-enable-o2
#include<iostream>
#include<vector>
#include<cstdio>
using namespace std;
const int MAXN=1e6+;
struct node
{
int l,r,ls,rs,mx,mxpos;
}T[MAXN];
vector<int>v[MAXN];
int root,tot;
void Build(int &k , int ll , int rr)
{
k=tot++;
T[k].mx=; T[k].l = ll ; T[k].r = rr;
if( ll == rr ) { T[k].mxpos = ll; return ; }
int mid=ll + rr >>;
Build( T[k].ls , ll , mid );
Build( T[k].rs , mid+ , rr );
}
void update(int k)
{
if( T[ T[k].ls ].mx >= T[ T[k].rs ].mx ) T[k].mx = T[ T[k].ls ].mx , T[k].mxpos = T[ T[k].ls ].mxpos;
else T[k].mx = T[ T[k].rs ].mx , T[k].mxpos = T[ T[k].rs ].mxpos;
}
void Add(int k, int pos )
{
if( T[k].l == T[k].r )
{
T[k].mx++;
return ;
}
int mid=T[k].l + T[k].r >>;
if(pos<=mid) Add( T[k].ls , pos );
else Add( T[k].rs , pos );
update(k);
}
void Delet(int k, int pos )
{
if( T[k].l == T[k].r )
{
T[k].mx--;
return ;
}
int mid= T[k].l + T[k].r >>;
if(pos<=mid) Delet( T[k].ls , pos );
else Delet( T[k].rs , pos );
update(k);
}
int main()
{
#ifdef WIN32
freopen("a.in","r",stdin);
#else
#endif
int N,M;
scanf("%d%d",&N,&M);
for(int i=; i<=M ;i++ )
{
int l,r,k;
scanf("%d%d%d",&l,&r,&k);
v[l].push_back(k);
v[r+].push_back(-k);
}
Build(root,,N);
for(int i=; i<=N ;i++)
{
for(int j=; j<v[i].size() ;j++ )
{
// printf("*%d*",v[i][j]);
if( v[i][j]> )
Add(root , v[i][j] );
if( v[i][j]< )
Delet(root , -v[i][j] );
}
if( T[root].mx )
printf("%d\n",T[ root ].mxpos );
else
printf("-1\n");
} return ;
}


洛谷T21778 过年的更多相关文章

  1. 洛谷.T21778.过年(线段树 扫描线)

    题目链接或者这吧.. 被数据坑了 /* 操作按左端点排个序 依次进行即可 不是很懂 为什么不写Build 而在Add时改mp[rt]=p 会WA(too short on line 251..) 找到 ...

  2. 洛谷 [T21778] 过年

    离线扫描线+查分+线段树 我们发现,这个题的询问都是离线的,所以我们尝试用离线扫描线的方法来处理 对于每一次操作,我们维护一个差分数组, 在询问的时候,我们用一根扫描线,从左往右扫,并用线段树维护,每 ...

  3. 洛谷-P5357-【模板】AC自动机(二次加强版)

    题目传送门 -------------------------------------- 过年在家无聊补一下这周做的几道AC自动机的模板题 sol:AC自动机,还是要解决跳fail边产生的重复访问,但 ...

  4. 洛谷1640 bzoj1854游戏 匈牙利就是又短又快

    bzoj炸了,靠离线版题目做了两道(过过样例什么的还是轻松的)但是交不了,正巧洛谷有个"大牛分站",就转回洛谷做题了 水题先行,一道傻逼匈牙利 其实本来的思路是搜索然后发现写出来类 ...

  5. 洛谷P1352 codevs1380 没有上司的舞会——S.B.S.

    没有上司的舞会  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond       题目描述 Description Ural大学有N个职员,编号为1~N.他们有 ...

  6. 洛谷P1108 低价购买[DP | LIS方案数]

    题目描述 “低价购买”这条建议是在奶牛股票市场取得成功的一半规则.要想被认为是伟大的投资者,你必须遵循以下的问题建议:“低价购买:再低价购买”.每次你购买一支股票,你必须用低于你上次购买它的价格购买它 ...

  7. 洛谷 P2701 [USACO5.3]巨大的牛棚Big Barn Label:二维数组前缀和 你够了 这次我用DP

    题目背景 (USACO 5.3.4) 题目描述 农夫约翰想要在他的正方形农场上建造一座正方形大牛棚.他讨厌在他的农场中砍树,想找一个能够让他在空旷无树的地方修建牛棚的地方.我们假定,他的农场划分成 N ...

  8. 洛谷P1710 地铁涨价

    P1710 地铁涨价 51通过 339提交 题目提供者洛谷OnlineJudge 标签O2优化云端评测2 难度提高+/省选- 提交  讨论  题解 最新讨论 求教:为什么只有40分 数组大小一定要开够 ...

  9. 洛谷P1371 NOI元丹

    P1371 NOI元丹 71通过 394提交 题目提供者洛谷OnlineJudge 标签云端评测 难度普及/提高- 提交  讨论  题解 最新讨论 我觉得不需要讨论O long long 不够 没有取 ...

随机推荐

  1. Python常用模块-摘要算法(hashlib)

    Python常用模块-摘要算法(hashlib) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.MD5算法参数详解 1.十六进制md5算法摘要 #!/usr/bin/env p ...

  2. python---django中自带分页类使用

    请先看在学习tornado时,写的自定义分页类:思路一致: python---自定义分页类 1.基础使用: 后台数据获取: from django.core.paginator import Pagi ...

  3. MySQL和Sql Server的sql语句区别

    1.自增长列的插入:SQLServer中可以不为自动增长列插入值,MySQL中需要为自动增长列插入值. 2.获取当前时间函数:SQLServer写法:getdate()MySQL写法:now() 3. ...

  4. Oozie 生成JMS消息并向 JMS Provider发送消息过程分析

    一,涉及到的工程 从官网下载源码,mvn 编译成 Eclipse工程文件:

  5. 一致性哈希算法介绍,及java实现

    应用场景 在做服务器负载均衡时候可供选择的负载均衡的算法有很多,包括: 轮循算法(Round Robin).哈希算法(HASH).最少连接算法(Least Connection).响应速度算法(Res ...

  6. CodeForces 1059C

    Description Let's call the following process a transformation of a sequence of length nn . If the se ...

  7. 一个网页的对象抽象之路——po编程 (干货,Java自动化测试)

    先来看一个在腾讯课堂首页搜索机构的操作步骤: 1:首先打开腾讯课堂的首页:https://ke.qq.com 2:点击课程或机构的下拉选择图标 3:选择机构 4:在搜索框输入要搜索的机构名称 5:点击 ...

  8. Git GUI可视化操作教程

    1.在本地新建版本库 首先,我们打开Git GUI是这样的一个界面,选择第一项,新建版本库.  然后选择你需要进行版本管理的项目路径,我选择了一个LoginDemo的项目.  当你创建了版本库的时候, ...

  9. java多线程计算和

    如题:如何利用多线程实现1~1000000000的和 本文利用Callable可以返回值的特性,并将执行结果用CompletionService进行存储,最后将分步值累加. import java.u ...

  10. tomcat报错:java.net.SocketException: Permission denied["http-nio-80"]

    tomcat报错:java.net.SocketException: Permission denied["http-nio-80"] 问题:使用非root账户tomcat启动to ...