luogu#P7134. 小 H 的序列
小 H 的序列
题目背景
小 H 有一个序列。
题目描述
提交时自动开启 O2 优化。
小 H 想让你维护一个长为 序列 ,要求支持
- 修改操作:将所有满足且的的值修改为;
- 查询操作:求出。
输入格式
总共包括 行。
第一行包含两个正整数 ,分别表示序列长度和操作次数。
第二行包含 个正整数 ,表示最初的序列。
接下来的 行,每行由一个数 开头,表示操作类型。
- 如果 ,表示修改操作,紧接着给出五个正整数 ;
- 如果 ,表示查询操作,紧接着给出四个正整数 ,意义如【题目描述】中所述。
每行的两个数字间由单个空格隔开,数据在 Windows 下生成。行末不保证没有多余空格。
输出格式
一行一个整数,表示所有查询操作的答案的异或和(如果没有查询操作输出一个数 )。
10 9
4 3 2 1 9 6 8 8 1 3
0 4 8 3 10 9
1 1 3 2 973874498
0 10 10 5 9 6
1 7 9 3 738164087
1 1 10 1 694888198
0 2 2 4 7 7
0 1 6 1 3 3
1 1 10 3 868703567
1 4 9 3 545789338
525
提示
输入的所有数字均为正整数。
设存在数据范围 ,满足 $n,m,a_i,w\le\mathrm{randmax},1\le l\le r\le n,1\le u\le v\le \mathrm{randmax},1\le t,k\le10^9$。
保证数据除 以及测试点 的 外随机,各变量意义如【题目描述】中所述。
由于本题输入量较大及为了省下不必要的评测耗时,请注意输入优化。在此给出以下模板(c++
语言):
/* ---- read() & rlong() - begin ---- */
#define gc() (p0==p1&&(p1=(p0=buf)+fread(buf,1,1048576,stdin),p0==p1)?EOF:*p0++)
char buf[1048576],*p0,*p1;
inline int read() {
int r=0; char c=gc(); while (c<48||c>57) c=gc();
while (c>47&&c<58) {r=(r<<3)+(r<<1)+(c^48); c=gc();} return r;
}
#undef gc
/* ---- read() & rlong() -- end ----- */
调用read()
函数会从输入中读入一个int
型整数,注意该模板不能处理负数,调试时请使用文件输入。