比赛场次 750
比赛名称 2026.5.16
比赛状态 已结束比赛成绩
开始时间 2026-05-16 08:00:00
结束时间 2026-05-16 13:00:00
开放分组 全部用户
组织者 HXF
注释介绍
题目名称 序列
输入输出 sequence.in/out
时间限制 1500 ms (1.5 s)
内存限制 512 MiB
测试点数 10 简单对比
用户 结果 时间 内存 得分
Gravatar李金泽 AAAAAAAAAA 2.999 s 84.98 MiB 100
Gravatar郑霁桓 ATTTTAAWWW 6.511 s 4.16 MiB 30
GravatarRuyi TTTTTAAEEE 8.854 s 4.81 MiB 20
GravatarLikableP AMMMMMMMMM 1.332 s 1.45 MiB 10
Gravatar终焉折枝 AEEEEEEEEE 1.391 s 4.06 MiB 10
Gravatarxuyuqing ATTTTTTTTT 14.411 s 9.86 MiB 10
Gravatar张宸汉 EEEEEWWWWW 2.239 s 38.79 MiB 0

3. 序列

★★★☆   输入文件:sequence.in   输出文件:sequence.out  
时间限制:1.5 s   内存限制:512 MiB

【题目背景】

简单数据结构。

【题目描述】

给定一个长度为 $n$ 的序列,$m$ 次询问,每次询问给出 $[L_i,R_i]$,求出所有满足 $L_i\le l\le r\le R_i$ 的所有子区间 $[l,r]$ 最小值之和。大样例

【输入格式】

第一行三个整数 $n,m,type$,其中 $type$ 的作用在于询问的给出形式。

第二行 $n$ 个整数,表示数列 $a_i$。

若 $type=0$,则接下来 $m$ 行,每行两个数 $L_i,R_i$,表示询问的区间 $L_i,R_i$。

若 $type=1$,则数据按照如下代码生成:

namespace gen{
	typedef unsigned long long ull;
	ull s,a,b,c,lastans=0;
	ull rand(){
		return s^=(a+b*lastans)%c;
	}
};

其中,$s,a,b,c$ 的初始值在第三行给出,满足 $s,a,b$ 均在 $[0,10^9]$ 之间,$c$ 在 $[1,10^9]$ 之间。lastans 表示上次询问的答案转化为 unsigned long long 类型后的值,第一次询问时值为 $0$。

每次询问时,你可以通过下面的方式生成 $l$ 和 $r$:

l=gen::rand()%n+1;
r=gen::rand()%n+1;
if(l>r) std::swap(l,r);

【输出格式】

一行一个整数,表示每次询问的答案转成 unsigned long long 类型后的异或和。

【样例输入1】

5 5 0
5 2 4 1 3
1 5
1 3
2 4
3 5
2 5

【样例输出1】

28

【样例输入2】

6 5 1
1 1 4 5 1 4
19 19 8 10

【样例输出2】

6

【数据规模与约定】


测试点编号 $n$ $m$ $type$ 特殊性质
$1$ $\le 10^3$ $\le 10^3$ $= 0$
$2 \sim 4$ $\le 2 \times 10^5$ $\le 2 \times 10^5$
$5$ $L_i=1$
$6 \sim 7$ $\le 2 \times 10^5$ $\le 2 \times 10^5$ $= 1$
$8 \sim 10$ $\le 10^6$ $\le 10^7$
对于所有数据,满足 $0\le a_i\le 10^9$。

【来源】

HNOI2016。