一开始t了五个点我就一脸懵逼

然后 发现高级操作...

就是那个tor的数组2333

可以让一些不需要改的不再去改啦

位运算果然是神奇的东西XD

魔性哈哈哈

#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
#define rint register int
#define MOD 998244353
template <class T>inline void read(T &X)
{
X=;int W=;char ch=;
while(!isdigit(ch))W|=ch=='-',ch=getchar();
while(isdigit(ch))X=(X<<)+(X<<)+(ch^),ch=getchar();
X=W?-X:X;return;
} int n,Q,k;
long long ans(),ans2(),tree[],tpow[],tor[],a[];
void build(int l,int r,int pos)
{
if(l==r)
{
tree[pos]=a[l];
tpow[pos]=(a[l]*a[l])%MOD;
tor[pos]=a[l];
return;
}
int mid=l+r>>;
build(l,mid,pos<<);
build(mid+,r,pos<<|); tree[pos]=tree[pos<<]+tree[pos<<|];
tpow[pos]=(tpow[pos<<]+tpow[pos<<|])%MOD;
tor[pos]=(tor[pos<<]|tor[pos<<|]);
} void query(int l,int r,int L,int R,int pos)
{
if(L<=l && r<=R)
{
ans+=tree[pos];
ans2=(ans2+tpow[pos])%MOD;
return;
}
int mid=l+r>>;
if(L<=mid)query(l,mid,L,R,pos<<);
if(R>mid)query(mid+,r,L,R,pos<<|);
} void change(int l,int r,int L,int R,int pos)
{
if((tor[pos]&(~k))==)return;
if(l==r)
{
tree[pos]=tree[pos]&k;
a[l]=a[l]&k;
tor[pos]=a[l];
tpow[pos]=(a[l]*a[l])%MOD;
return;
}
int mid=l+r>>;
if(L<=mid)change(l,mid,L,R,pos<<);
if(R>mid)change(mid+,r,L,R,pos<<|); tree[pos]=tree[pos<<]+tree[pos<<|];
tpow[pos]=(tpow[pos<<]+tpow[pos<<|])%MOD;
tor[pos]=(tor[pos<<]|tor[pos<<|]);
} int main()
{
// freopen("seg.in","r",stdin);
// freopen("seg.out","w",stdout);
read(n);
for(rint i=;i<=n;++i)read(a[i]);
build(,n,);
read(Q);
while(Q--)
{
int num,l,r;
read(num);
if(num==)
{
read(l),read(r),read(k);
change(,n,l,r,);
continue;
}
else
{
read(l),read(r);
ans=;ans2=;
query(,n,l,r,);
if(num==)
{
printf("%lld\n",ans);
continue;
}
if(num==)
{
ans%=MOD;
ans=(*ans2%MOD*(r-l+)%MOD+*ans%MOD*ans)%MOD;
printf("%lld\n",ans);
continue;
}
}
}
}

<JZOJ5943>树的更多相关文章

  1. B树——算法导论(25)

    B树 1. 简介 在之前我们学习了红黑树,今天再学习一种树--B树.它与红黑树有许多类似的地方,比如都是平衡搜索树,但它们在功能和结构上却有较大的差别. 从功能上看,B树是为磁盘或其他存储设备设计的, ...

  2. ASP.NET Aries 入门开发教程8:树型列表及自定义右键菜单

    前言: 前面几篇重点都在讲普通列表的相关操作. 本篇主要讲树型列表的操作. 框架在设计时,已经把树型列表和普通列表全面统一了操作,用法几乎是一致的. 下面介绍一些差距化的内容: 1:树型列表绑定: v ...

  3. 再讲IQueryable<T>,揭开表达式树的神秘面纱

    接上篇<先说IEnumerable,我们每天用的foreach你真的懂它吗?> 最近园子里定制自己的orm那是一个风生水起,感觉不整个自己的orm都不好意思继续混博客园了(开个玩笑).那么 ...

  4. HDU1671——前缀树的一点感触

    题目http://acm.hdu.edu.cn/showproblem.php?pid=1671 题目本身不难,一棵前缀树OK,但是前两次提交都没有成功. 第一次Memory Limit Exceed ...

  5. 算法与数据结构(十一) 平衡二叉树(AVL树)

    今天的博客是在上一篇博客的基础上进行的延伸.上一篇博客我们主要聊了二叉排序树,详情请戳<二叉排序树的查找.插入与删除>.本篇博客我们就在二叉排序树的基础上来聊聊平衡二叉树,也叫AVL树,A ...

  6. [C#] C# 知识回顾 - 表达式树 Expression Trees

    C# 知识回顾 - 表达式树 Expression Trees 目录 简介 Lambda 表达式创建表达式树 API 创建表达式树 解析表达式树 表达式树的永久性 编译表达式树 执行表达式树 修改表达 ...

  7. bzoj3207--Hash+主席树

    题目大意: 给定一个n个数的序列和m个询问(n,m<=100000)和k,每个询问包含k+2个数字:l,r,b[1],b[2]...b[k],要求输出b[1]~b[k]在[l,r]中是否出现. ...

  8. bzoj1901--树状数组套主席树

    树状数组套主席树模板题... 题目大意: 给定一个含有n个数的序列a[1],a[2],a[3]--a[n],程序必须回答这样的询问:对于给定的i,j,k,在a[i],a[i+1],a[i+2]--a[ ...

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

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

随机推荐

  1. Java之同步方法处理继承Thread类的线程安全问题

    /** * 使用同步方法处理继承Thread类的方式中的线程安全问题 * */class Window4 extends Thread { private static int ticket = 10 ...

  2. 数据分析基础-jupyter notebook-Anaconda-Numpy

    数据分析介绍 1.数据分析是什么? 2.数据分析能干什么? 3.为什么利用Python进行数据分析? 4.数据分析过程概述 5.常用库简介 1.数据分析是什么? 数据分析是指用适当的统计分析方法对收集 ...

  3. Linux--Centos下搭建Git服务器

    参考:http://kimi.it/370.html   http://blog.csdn.net/wave_1102/article/details/47779401 开始直接用 yum insta ...

  4. js变量的相关要点

    如果变量在函数内没有声明(没有使用 var 关键字),该变量为全局变量. JavaScript 变量生命周期在它声明时初始化. 局部变量在函数执行完毕后销毁. 全局变量在页面关闭后销毁.

  5. 7.docker file 语法

    详细文档 : https://docs.docker.com/engine/reference/builder/ 1. FROM   尽量使用官方的 image 作为 base image FROM ...

  6. goweb-goweb基础

    goweb DNS工作原理 在浏览器中输入www.qq.com域名,操作系统会先检查自己本地的hosts文件是否有这个网址映射关系,如果有,就先调用这个IP地址映射,完成域名解析. 如果hosts里没 ...

  7. PCoA|NMDS|STRESS|RDA |RA|Unimodal|CCA|Generalized Joint Attribute Modeling

    PCoA:主坐标轴分析 数值型变量使用各种距离公式,而分类变量看是否相同,比如, Aabbcc || Aaffff 其中,两个相同,4个不同,一组6个,则(6+6-2*2)=8. PC0A与PCA区别 ...

  8. MySQL导入及导出数据库

    一.数据库导入 背景:已经从A机器把SQL文件导出,现在需要将sql文件导入B机器(两台机器都是Linux系统) 将sql文件上传到B机器,然后在B机器命令行执行以下命令(不用进入到数据库) 前提是t ...

  9. POJ-2528 Mayor's posters(线段树区间更新+离散化)

    http://poj.org/problem?id=2528 https://www.luogu.org/problem/UVA10587 Description The citizens of By ...

  10. C#面向对象---对象成员、方法加载、引用类库

    一.方法重载: 1.两个函数同名,就互相构成方法的重载关系 2.重载的函数,必须跟其他函数之间具有不同的参数类型或参数个数 二.字段与属性 类的字段: 类里面是可以直接定义变量的,这些变量就叫类的字段 ...