题目:http://codeforces.com/problemset/problem/356/A

题意:首先给你n,m,代表有n个人还有m次描述,下面m行,每行l,r,x,代表l到r这个区间都被x所击败了(l<=x<=r),被击败的人立马退出游戏让你最后输出每个人是被谁击败的,最后那个胜利者没被

人击败就输出0

思路:他的每次修改的是一个区间的被击败的人,他而且只会记录第一次那个被击败的人,用线段树堕落标记的话他会记录最后一次的,所以我们倒着来修改,

然后因为那个区间里面还包含了自己,在线段树操作里面修改不太方便,所以我们采用把他拆分成两个区间来操作

#include<cstdio>
#include<cstring>
#include<cmath>
#include<iostream>
#include<algorithm>
using namespace std;
struct tree
{
int l,r;
int val;
}d[*];
struct sss
{
int x,y,z;
}a[];
int n,m;
void buildtree(int cnt,int l,int r)
{
if(cnt>n*) return;
d[cnt].l=l;
d[cnt].r=r;
int mid=(l+r)/;
buildtree(cnt*,l,mid);
buildtree(cnt*+,mid+,r);
}
void pushdown(int cnt)
{
if(d[cnt].val!=){
d[cnt*].val=d[cnt].val;
d[cnt*+].val=d[cnt].val;
d[cnt].val=;
}
}
void update(int cnt,int l,int r,int val){
if(l==d[cnt].l&&r==d[cnt].r){
d[cnt].val=val;
return;
}
pushdown(cnt);
int mid=(d[cnt].l+d[cnt].r)/;
if(r<=mid) update(cnt*,l,r,val);
else if(l>mid) update(cnt*+,l,r,val);
else{
update(cnt*,l,mid,val);
update(cnt*+,mid+,r,val);
} }
void query(int cnt,int x)
{
if(d[cnt].l==d[cnt].r){
if(d[cnt].val==x) printf("0 ");
else printf("%d ",d[cnt].val);
return;
}
pushdown(cnt);
int mid=(d[cnt].l+d[cnt].r)/;
if(x<=mid) query(cnt*,x);
else query(cnt*+,x); }
int main()
{
cin>>n>>m;
for(int i=;i<m;i++){
cin>>a[i].x>>a[i].y>>a[i].z;
}
buildtree(,,n);
for(int i=m-;i>=;i--){
if(a[i].z->=a[i].x) //拆分成两个区间来修改
update(,a[i].x,a[i].z-,a[i].z);
if(a[i].z+<=a[i].y)
update(,a[i].z+,a[i].y,a[i].z);
}
for(int i=;i<=n;i++){
query(,i);
}
}

最新文章

  1. WebForm路由踩坑 ajax请求多次
  2. 关于android 5.0对开发带来的影响
  3. Perl爬取铁路违章旅客信息
  4. 对象Transform,对属性赋值
  5. MySQL语法
  6. java运算符新用法和^新认识
  7. Golang全接触
  8. golang io需要牢记的几个点
  9. iOS 之点击按钮改变状态的图片
  10. Tomcat禁止外网访问
  11. jQuery学习笔记(二)
  12. Java五道输出易错题解析(进来挑战下)
  13. 表单提交前,判断webuploader是否上传
  14. MS SQL自定义函数IsPositiveInteger
  15. pl sql 中文乱码
  16. OC OD介绍
  17. [05] Bean的作用域和生命周期
  18. data warehouse 1.0 vs 2.0
  19. Vue.js路由
  20. CVE-2012-1876漏洞分析

热门文章

  1. os.path.join
  2. Grunt: 拼接代码,js丑化(压缩),css压缩,html压缩,观察文件,拷贝文件,删除文件,压缩文件
  3. P3195 [HNOI2008]玩具装箱TOY(斜率优化dp)
  4. Docket 使用命令
  5. Linux 查看系统负载
  6. Linux 系统开启随机端口数量 调优
  7. CF438E The Child and Binary Tree
  8. Learning-MySQL【5】:数据的操作管理
  9. angular-cli.json配置参数解释,以及依稀常用命令的通用关键参数解释
  10. LNMP常用命令总结