题目大意:

给定n m x y z

长度为n的序列初始为0

接下来m个操作 l r v 将l r区间内比v小的数都变成v

l r v由x y z和给定的函数生成

线段树维护区间 最大值 最小值 再加 lazy标记

当v大于某个区间的最大值时 整个区间都要变成v 用lazy标记

当v小于某个区间的最小值时 整个区间都不需要操作

题解:https://blog.csdn.net/weixin_39453270/article/details/81462219

#include <bits/stdc++.h>
using namespace std;
#define INF 0x3f3f3f3f
#define LL long long
#define mem(i,j) memset(i,j,sizeof(i))
const int N=1e5+;
const int MOD=1e9+; #define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
#define root 1,n,1
int maxi[N<<], mini[N<<], lazy[N<<];
void pushUp(int rt) {
maxi[rt]=max(maxi[rt<<],maxi[rt<<|]);
mini[rt]=min(mini[rt<<],mini[rt<<|]);
}
void pushDown(int rt) {
if(lazy[rt]!=-) {
mini[rt<<]=max(mini[rt<<],lazy[rt]);
mini[rt<<|]=max(mini[rt<<|],lazy[rt]);
maxi[rt<<]=max(maxi[rt<<],lazy[rt]);
maxi[rt<<|]=max(maxi[rt<<|],lazy[rt]);
lazy[rt<<]=max(lazy[rt<<],lazy[rt]);
lazy[rt<<|]=max(lazy[rt<<|],lazy[rt]);
lazy[rt]=-;
}
}
void build(int l,int r,int rt) {
lazy[rt]=-;
if(l==r) {
mini[rt]=maxi[rt]=;
return ;
}
int m=(l+r)>>;
build(lson);
build(rson);
pushUp(rt);
}
void update(int L,int R,int v,int l,int r,int rt) {
if(l==r) {
mini[rt]=max(mini[rt],v);
maxi[rt]=max(maxi[rt],v);
return;
}
if(L<=l && r<=R) {
if(maxi[rt]<=v) {
maxi[rt]=mini[rt]=v;
lazy[rt]=max(lazy[rt],v);
return;
}
}
if(mini[rt]>=v) return;
pushDown(rt);
int m=(l+r)>>;
if(L<=m) update(L,R,v,lson);
if(m<R) update(L,R,v,rson);
pushUp(rt);
}
LL query(int pos,int l,int r,int rt) {
if(l==r) return 1LL*pos*mini[rt];
pushDown(rt);
int m=(l+r)>>;
if(pos<=m) return query(pos,lson);
else return query(pos,rson);
} int n, m;
unsigned int x, y, z;
unsigned int RNG61() {
x=x^(x<<);
x=x^(x>>);
x=x^(x<<);
x=x^(x>>);
unsigned int w=x^(y^z);
x=y, y=z, z=w;
return z;
}
int main()
{
int t; scanf("%d",&t);
while(t--) {
scanf("%d%d%u%u%u",&n,&m,&x,&y,&z);
build(root);
for(int i=;i<=m;i++) {
int l=RNG61()%n+;
int r=RNG61()%n+;
int v=RNG61()%(<<);
if(l>r) swap(l,r);
update(l,r,v,root);
}
LL ans=;
for(int i=;i<=n;i++)
ans^=query(i,root);
printf("%lld\n",ans);
} return ;
}

hdu6354 /// 线段树的更多相关文章

  1. bzoj3932--可持久化线段树

    题目大意: 最近实验室正在为其管理的超级计算机编制一套任务管理系统,而你被安排完成其中的查询部分.超级计算机中的 任务用三元组(Si,Ei,Pi)描述,(Si,Ei,Pi)表示任务从第Si秒开始,在第 ...

  2. codevs 1082 线段树练习 3(区间维护)

    codevs 1082 线段树练习 3  时间限制: 3 s  空间限制: 128000 KB  题目等级 : 大师 Master 题目描述 Description 给你N个数,有两种操作: 1:给区 ...

  3. codevs 1576 最长上升子序列的线段树优化

    题目:codevs 1576 最长严格上升子序列 链接:http://codevs.cn/problem/1576/ 优化的地方是 1到i-1 中最大的 f[j]值,并且A[j]<A[i] .根 ...

  4. codevs 1080 线段树点修改

    先来介绍一下线段树. 线段树是一个把线段,或者说一个区间储存在二叉树中.如图所示的就是一棵线段树,它维护一个区间的和. 蓝色数字的是线段树的节点在数组中的位置,它表示的区间已经在图上标出,它的值就是这 ...

  5. codevs 1082 线段树区间求和

    codevs 1082 线段树练习3 链接:http://codevs.cn/problem/1082/ sumv是维护求和的线段树,addv是标记这歌节点所在区间还需要加上的值. 我的线段树写法在运 ...

  6. PYOJ 44. 【HNSDFZ2016 #6】可持久化线段树

    #44. [HNSDFZ2016 #6]可持久化线段树 统计 描述 提交 自定义测试 题目描述 现有一序列 AA.您需要写一棵可持久化线段树,以实现如下操作: A v p x:对于版本v的序列,给 A ...

  7. CF719E(线段树+矩阵快速幂)

    题意:给你一个数列a,a[i]表示斐波那契数列的下标为a[i],求区间对应斐波那契数列数字的和,还要求能够维护对区间内所有下标加d的操作 分析:线段树 线段树的每个节点表示(f[i],f[i-1])这 ...

  8. 【BZOJ-3779】重组病毒 LinkCutTree + 线段树 + DFS序

    3779: 重组病毒 Time Limit: 20 Sec  Memory Limit: 512 MBSubmit: 224  Solved: 95[Submit][Status][Discuss] ...

  9. 【BZOJ-3673&3674】可持久化并查集 可持久化线段树 + 并查集

    3673: 可持久化并查集 by zky Time Limit: 5 Sec  Memory Limit: 128 MBSubmit: 1878  Solved: 846[Submit][Status ...

随机推荐

  1. Cocos2d-x之Director

    |   版权声明:本文为博主原创文章,未经博主允许不得转载. Director类简介 在Cocos2d-x-3.x引擎中,采用节点树形结构来管理游戏对象,一个游戏可以划分为不同的场景,一个场景又可以分 ...

  2. Jmeter脚本如何在Linux通过no GUI的方式运行 命令行传递参数

    本文主要介绍Jmeter脚本如何在Linux通过no GUI的方式运行.总共分三部分: 1.Linux下JDK的安装及环境变量的配置 2.Linux下Jmeter的安装及环境变量的配置 3.运行结果的 ...

  3. linux sed删除^M换行符以及^[[转义字符

    1. 删除文档中的蓝色转义字符^M 注意:^M 不能从键盘输入^和M,也不能复制.而是需要按Ctrl+v 然后再按Ctrl+M 按Ctrl+v的时候屏幕不会输出,再按下Ctrl+M的时候即会出现^M  ...

  4. 使用Hystrix实现断路器处理

    在之前的架构的基础上我们会发现,一旦级别低的服务宕了,会导致调用它的服务也挂掉,这样容易产生级联效应(雪崩效应),为了防止这种情况的出现,我引入了Hystrix来处理,先介绍ribbon使用Hystr ...

  5. jsp service bean

    //在jsp中使用后台service中方法需要在jsp页面引入service bean 1 <%@page import="com..entity.Users"%> & ...

  6. rest framework 之前

    在开始rest framework之前,我们先来了解一下什么是restful rest 是一种软件架构风格,Representational state Transfer 它从资源的角度去看整个网络, ...

  7. Hadoop(三)YARN

    Yet Another Resources Negotiator 从Hadoop2.0版本开始引入YARN,主要功能: 集群资源管理系统 负责集群的统一管理和调度 与客户端交互,处理客户端请求 一.基 ...

  8. 【基础】Pipeline

    1. 参考的优秀文章 Request/Response protocols and RTT 2. 来源 原来,系统中一个树结构的数据来源是Redis,由于数据增多.业务复杂,查询速度并不快.究其原因, ...

  9. css3布局篇(双飞翼)

    大家看到好多电商网站都见过经典三列布局,它也叫做圣杯布局 ,是Kevin Cornell在2006年提出的一个布局模型概念,这个在国内最早是由淘宝UED的工程师传播开来,在中国也有叫法是双飞翼布局,它 ...

  10. js (ECMAScript) 对数据处理的 方法、属性总结

    注意:原生类型的数据本身是没有属性.方法的.但是 有的原始类型(如 string),当他 调用属性或方法时,JS引擎会先对原始类型数据进行包装(即隐式的转换为相应的对象)  https://www.c ...