JZOJ 5943. 树
Description
Input
第三行一个整数 q 表示操作次数, 接下来 q 行每行一次操作, 格式同题目描述.
Output
Sample Input
Sample Input1
5
8 4 3 5 6
5
2 3 5
3 1 2
1 2 4 3
2 3 5
3 1 2 样例 2
见下发文件中的 ex_seg2.in/out.
Sample Output
Sample Output1
14
608
10
384 样例 1 解释
第三次操作后, 序列变为 [8, 0, 3, 1, 6].
#include <cstdio>
#include <cstring>
#include <iostream>
#define mo 998244353
#define LL long long
#define N 100007
using namespace std;
struct tree{
LL s,sum1,sum2;
int l,r;
}e[N*];
int n,q,a[N];
LL ans,sum; int read(){
int s=;
char ch=getchar();
for(;ch<''||ch>'';ch=getchar());
for(;ch>=''&&ch<='';s=s*+ch-'',ch=getchar());
return s;
} inline void Build(int p,int l,int r){
if (l==r){
e[p].l=l,e[p].r=r;
e[p].s=a[l];
e[p].sum1=a[l];
e[p].sum2=e[p].s*e[p].s%mo;
return;
}
int mid=(l+r)>>;
Build(p<<,l,mid);
Build(p<<|,mid+,r);
e[p].l=l;
e[p].r=r;
e[p].s=e[p<<].s|e[p<<|].s;
e[p].sum1=e[p<<].sum1+e[p<<|].sum1;
e[p].sum2=(e[p<<].sum2+e[p<<|].sum2)%mo;
} void Init(){
n=read();
for(int i=;i<=n;i++) a[i]=read();
Build(,,n);
q=read();
} void query(int p,int l,int r){
if (e[p].l>=l&&e[p].r<=r){
ans+=e[p].sum1;
return;
}
int mid=(e[p].l+e[p].r)>>;
if (mid>=r) query(p<<,l,r);
else if(mid<l) query(p<<|,l,r);
else query(p<<,l,r),query(p<<|,l,r);
} void update(int p,int l,int r,int x){
if ((e[p].s&x)==e[p].s) return;
if (e[p].l==e[p].r){
e[p].s&=x;
e[p].sum1=e[p].s;
e[p].sum2=e[p].s*e[p].s%mo;
return;
}
int mid=(e[p].l+e[p].r)>>;
if (mid>=r) update(p<<,l,r,x);
else if(mid<l) update(p<<|,l,r,x);
else update(p<<,l,r,x),update(p<<|,l,r,x);
e[p].s=e[p<<].s|e[p<<|].s;
e[p].sum1=e[p<<].sum1+e[p<<|].sum1;
e[p].sum2=(e[p<<].sum2+e[p<<|].sum2)%mo;
} void chaxun(int p,int l,int r){
if (e[p].l>=l&&e[p].r<=r){
sum=(sum+e[p].sum2)%mo;
return;
}
int mid=(e[p].l+e[p].r)>>;
if (mid>=r) chaxun(p<<,l,r);
else if(mid<l) chaxun(p<<|,l,r);
else chaxun(p<<,l,r),chaxun(p<<|,l,r);
} int main(){
freopen("seg.in","r",stdin);
freopen("seg.out","w",stdout);
Init();
while(q--){
int x,y,l,r;
x=read();
if (x==){
l=read(),r=read(),y=read();
update(,l,r,y);
}
if (x==){
l=read(),r=read();
ans=;
query(,l,r);
printf("%lld\n",ans);
}
if (x==){
l=read(),r=read();
sum=;
ans=;
query(,l,r);
chaxun(,l,r);
ans%=mo;
sum%=mo;
printf("%lld\n",(sum*(r-l+)%mo*%mo+(ans*ans)%mo*)%mo);
}
}
}
JZOJ 5943. 树的更多相关文章
- [JZOJ 5814] 树
题目:从u到v经过多少条边. 思路: 考虑他是怎么走的?? 从\(u\)到\(v\)一定是\(fa[u]\),\(fa[fa[u]]\),反正就是走\(LCA\),那么如果算出每个点到父亲的期望步数, ...
- [jzoj 3175] 数树数 解题报告 (树链剖分)
interlinkage: https://jzoj.net/senior/#main/show/3175 description: 给定一棵N 个节点的树,标号从1~N.每个点有一个权值.要求维护两 ...
- [jzoj 5662] 尺树寸泓 解题报告 (线段树+中序遍历)
interlinkage: https://jzoj.net/senior/#contest/show/2703/1 description: solution: 发现$dfs$序不好维护 注意到这是 ...
- [jzoj 6086] [GDOI2019模拟2019.3.26] 动态半平面交 解题报告 (set+线段树)
题目链接: https://jzoj.net/senior/#main/show/6086 题目: 题解: 一群数字的最小公倍数就是对它们质因数集合中的每个质因数的指数取$max$然后相乘 这样的子树 ...
- [JZOJ 5908] [NOIP2018模拟10.16] 开荒(kaihuang)解题报告 (树状数组+思维)
题目链接: https://jzoj.net/senior/#contest/show/2529/1 题目: 题目背景:尊者神高达作为一个萌新,在升级路上死亡无数次后被一只大黄叽带回了师门.他加入师门 ...
- [JZOJ 5909] [NOIP2018模拟10.16] 跑商(paoshang) 解题报告 (圆方树)
题目链接: https://jzoj.net/senior/#contest/show/2529/2 题目: 题目背景:尊者神高达很穷,所以他需要跑商来赚钱题目描述:基三的地图可以看做 n 个城市,m ...
- JZOJ P5829 HZOI 20190801 A string 线段树
JZOJ P5829 A. string 题面:https://www.cnblogs.com/Juve/articles/11286476.html 考场上想起了排序这道题:https://www. ...
- (jzoj snow的追寻)线段树维护树的直径
jzoj snow的追寻 DFS序上搞 合并暴力和,记录最长链和当前最远点,距离跑LCA # include <stdio.h> # include <stdlib.h> # ...
- JZOJ 4738. 神在夏至祭降下了神谕 DP + 线段树优化
4738. 神在夏至祭降下了神谕 Time Limits: 1000 ms Memory Limits: 262144 KB Detailed Limits Goto ProblemSet D ...
随机推荐
- Struts2学习-拦截器
1.新建项目user4,建立好和user3一样的目录,与之相比只是添加几个类,主要是struts.xml和action类的改变,其结果没有太大的变化 struts,xml <?xml versi ...
- php调用含有命名空间的类
现有a.php 和 b.php在同一个目录下 a.php中 namespace myspace; class A{ __construct(){} .... } b.php中调用类A require_ ...
- BZOJ 2763: [JLOI2011]飞行路线 【分层图模板】
任意门:https://www.lydsy.com/JudgeOnline/problem.php?id=2763 2763: [JLOI2011]飞行路线 Time Limit: 10 Sec M ...
- 记一次msfconsole_android渗透实验
1>查看本机IP 2>生成App木马 3>将生成的木马安装至手机 4>打开msfconsole 1, use exploit/multi/handler 加载模块. 2, ...
- 2018.11.26 struts2流程源码
struts2的架构图 从最上面的类开始,也就是i 我们的核心过滤器strutsPrepareAndExecuteFilter 判断当前请求是否由struts2来处理,如果是就往else走,不由它来处 ...
- JavaScript常见的内存泄漏原因
JavaScript 的垃圾收集机制 javascript具有自动垃圾收集机制,也就是说,执行环境会负责管理代码执行过程中的使用的内存.而在C和C++之类的语言中,开发人员的一项基本任务就是手动跟踪内 ...
- 如何删除anaconda
因为实验室电脑之前装tensorflow是用的anaconda装的,导致现在用pip装tensorflow1.0装上了却还是用的annaconda下的tensorflow0.8,所以想删除anacon ...
- 线段拟合(带拉格朗日乘子,HGL)
线段特征上的扫描点满足 (1).本文的线段特征定义为:L: [dL, φL, PLs, PLe]T,如图1所示.其中,dL为笛卡尔坐标系中原点(激光传感器所在位置)到线段的距离, φL为线段特征的倾角 ...
- sqlite迁移mysql(导入导出数据)
第一步,将数据导出 进入sqlite3->.open [打开文件路径]->.cd [要保存的路径]->.output [导出文件名字.sql]->.dump 等待导出成功后,就 ...
- [luoguP3627][APIO2009]抢掠计划
先来看一下题目描述: 题目描述 Siruseri 城中的道路都是单向的.不同的道路由路口连接.按照法律的规定, 在每个路口都设立了一个 Siruseri 银行的 ATM 取款机.令人奇怪的是,Siru ...