| 比赛场次 | 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 简单对比 |
| 用户 | 结果 | 时间 | 内存 | 得分 |
|---|---|---|---|---|
|
|
AAAAAAAAAA | 2.999 s | 84.98 MiB | 100 |
|
|
ATTTTAAWWW | 6.511 s | 4.16 MiB | 30 |
|
|
TTTTTAAEEE | 8.854 s | 4.81 MiB | 20 |
|
|
AMMMMMMMMM | 1.332 s | 1.45 MiB | 10 |
|
|
AEEEEEEEEE | 1.391 s | 4.06 MiB | 10 |
|
|
ATTTTTTTTT | 14.411 s | 9.86 MiB | 10 |
|
|
EEEEEWWWWW | 2.239 s | 38.79 MiB | 0 |
简单数据结构。
给定一个长度为 $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 类型后的异或和。
5 5 0 5 2 4 1 3 1 5 1 3 2 4 3 5 2 5
28
6 5 1 1 1 4 5 1 4 19 19 8 10
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$ |
HNOI2016。