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 ...
随机推荐
- SharePoint - JavaScript Variable & Functions
1. MSOWebPartPageFormName 获取当前form的名称,然后可用document.forms[MSOWebPartPageFormName]来得到当前form: 2. _spPag ...
- mvc4站点支持.html
MVc站点在配置通配符后,还需要配置这个才能支持.html.在自定义的路由中加入.自定义代码就可以支持子定义的html了.
- WAKE-SPM-综述
1,SPM 1,1source paper:http://lear.inrialpes.fr/pubs/2007/ZMLS07/ZhangMarszalekLazebnikSchmid-IJCV07- ...
- SpringBoot应用和PostgreSQL数据库部署到Kubernetes上的一个例子
创建一个名为ads-app-service的服务: 上述Service的yaml文件里每个字段,在Kubernetes的API文档里有详细说明. https://kubernetes.io/docs/ ...
- 将nodeList转换为数组(兼容性)
将nodeList转换为数组(兼容性) function arrayofNodes(nodes){ var arr = null; try{ arr = Array.prototype.slice.c ...
- WP模拟器修改语言为中文方法
对于WP7模拟器来说默认启动时显示的语言为英文,除了操作界面外,如果你的应用支持多国语言必须修改为中文才能显示正确的界面.下面Zune123将WP7 Emulator修改语言为中文的方法写个简单的教程 ...
- SQL SERVER 2012断日志
有一个SQL2012库的日志达到了100G左右,平时开发人员根本没有做过事务日志备份,而磁盘空间已经快满了.所以,只能截断它.但是,由于从2K8以后,SQL SERVER好像不再提供 truncate ...
- 机器学习基础(HGL的机器学习笔记1)
统计学习:统计学习是关于计算机基于数据构建概率统计模型并运用模型对数据进行预测与分析的一门学科,统计学习也成为统计机器人学习[1]. 统计学习分类:有监督学习与无监督学习[2]. 统计学习三要素:模型 ...
- 【luogu P1040 加分二叉树】 题解
题目链接:https://www.luogu.org/problemnew/show/P1040 今天考试考了一个区间DP...没错就是这个... 太蒟了真是连区间DP都不会...看了看题解也看不懂, ...
- ng-repeat 指令(带有数组)
<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content=&q ...