题目名称 2847. 算术天才⑨与等差数列
输入输出 Ap.in/out
难度等级 ★★★★
时间限制 2000 ms (2 s)
内存限制 128 MiB
测试数据 10
题目来源 GravatarLGLJ 于2019-09-21加入
开放分组 全部用户
提交状态
分类标签
线段树
分享题解
通过:3, 提交:3, 通过率:100%
Gravatarop_组撒头屯 100 1.098 s 17.17 MiB C++
Gravatarshy 100 1.125 s 12.98 MiB C
GravatarLGLJ 100 2.296 s 23.37 MiB C++
关于 算术天才⑨与等差数列 的近10条评论(全部评论)

2847. 算术天才⑨与等差数列

★★★★   输入文件:Ap.in   输出文件:Ap.out   简单对比
时间限制:2 s   内存限制:128 MiB

【题目描述】

算术天才⑨非常喜欢和等差数列玩耍。

有一天,他给了你一个长度为$n$的序列,其中第$i$个数为$a[i]$。

他想考考你,每次他会给出询问$l,r,k$,问区间$[l,r]$内的数从小到大排序后能否形成公差为$k$的等差数列。

当然,他还会不断修改其中的某一项。

为了不被他鄙视,你必须要快速并正确地回答完所有问题。

注意:只有一个数的数列也是等差数列。

【输入格式】

第一行包含两个正整数$n,m(1<=n,m<=300000)$,分别表示序列的长度和操作的次数。

第二行包含n个整数,依次表示序列中的每个数$a[i](0<=a[i]<=10^9)$。

接下来m行,每行一开始为一个数$op$,

若$op=1$,则接下来两个整数$x,y(1<=x<=n,0<=y<=10^9)$,表示把$a[x]$修改为$y$。

若$op=2$,则接下来三个整数$l,r,k(1<=l<=r<=n,0<=k<=10^9)$,表示一个询问。

在本题中,$x,y,l,r,k$都是经过加密的,都需要$异或$你之前输出的$Yes$的个数来进行解密。

【输出格式】

输出若干行,对于每个询问,如果可以形成等差数列,那么输出Yes,否则输出No。

【样例输入】

5 3
1 3 2 5 6
2 1 5 1
1 5 4
2 1 5 1

【样例输出】

No
Yes

【提示】

在此键入。

【来源】

【BZOJ 4373】