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 ...
随机推荐
- unity获取相机视窗口大小
using UnityEngine; using System.Collections; public class CameraView : MonoBehaviour { private Camer ...
- c++类模板成员函数报错
类模板成员函数要不就在类模板中实现,要不就和类模板写在同一个文件中. 否则然会出现下面错误: >main.obj : error LNK2019: 无法解析的外部符号 "public: ...
- tcp/ip 调优示例
# Kernel sysctl configuration file for Linux # # Version 1.12 - 2015-09-30 # Michiel Klaver - IT Pro ...
- Oracle分析函数列表分享
SUM :该函数计算组中表达式的累积和 MIN :在一个组中的数据窗口中查找表达式的最小值 MAX :在一个组中的数据窗口中查找表达式的最大值 AVG ...
- phpunit 单元测试之代码覆盖率
最近团队在不断完善项目中的单元测试用例,会用到代码覆盖率分析,本来以为 homestead 应该默认安装了 xdebug ,所以使用 phpunit --coverage-html ./tests/c ...
- myeclipse 阿里巴巴java开发规范
今天发现阿里巴巴搞了个java开发规范,然后火了: 然后发现我也整了一下: 阿里巴巴java开发规范宣传页: http://mp.weixin.qq.com/s/IbibsXlWHlM59kfXJqR ...
- 林锐书:写一个hello world by seasoned professional
#include <iostream> #include <string.h> using namespace std; class String { private: int ...
- Vim中 ctags 跳转直接跳到第一个匹配行的问题
意图 用ctags搜索代码时, 用 ctrl + ] 后,只有一个匹配项直接跳转,有多个则列出所有匹配项选择跳转 问题 在 vim 中使用 ctags 是一个很令人舒服的事情,但有时一些默认的配置和不 ...
- typescript 添加基础类型的扩展方法
以时间转换为案例: //声明接口,也是在声明date这个基础类型要定义一个format的扩展方法,不写接口声明会报错 interface Date { Format(fmt:string):strin ...
- html5 5个重要特性
HTML5已经火了一段时间了,相信作为web相关开发project师,肯定或多或少的了解和尝试过一些HTML5的特性和编程.还记得曾经我们介绍过的HTML5新标签. 作为未来前端开发技术的潮流和风向标 ...