CF2043G.Problem with Queries

NOI/NOI+/CTSC

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

给定一个整数数组 aa,长度为 nn。你的任务是处理 qq 个查询,这些查询分为两种类型:

  • 类型 1:1 p x — 将数组中索引为 pp 的元素值更新为 xx;
  • 类型 2:2 l r — 计算数组 aa 中满足条件的索引对 (i,j)(i, j) 的数量,其中 l≤i<j≤rl \le i < j \le r 且 ai≠aja_i \ne a_j。

请注意,这些查询是编码过的;每个后续查询必须在解出前一个类型 2 查询的答案后才能解码。

输入格式

第一行输入一个整数 nn,表示数组的长度(1≤n≤1051 \le n \le 10^5)。

第二行输入 nn 个整数,分别为 a1,a2,…,ana_1, a_2, \dots, a_n(1≤ai≤n1 \le a_i \le n)。

第三行输入一个整数 qq,代表要处理的查询数量(1≤q≤3⋅1051 \le q \le 3 \cdot 10^5)。

接下来的 qq 行中,每行描述了一个查询,格式如下:

  • 类型 1:以 1 p' x' 的形式给出(0≤p′,x′≤n−10 \le p', x' \le n-1);
  • 类型 2:以 2 l' r' 的形式给出(0≤l′,r′≤n−10 \le l', r' \le n-1)。

查询的解码规则如下:设 last\mathit{last} 为最近一次处理的类型 2 查询的答案(最初,last=0\mathit{last} = 0)。

  • 如果是类型 1 查询,则 p=((p′+last) mod n)+1p = ((p' + \mathit{last}) \bmod n) + 1,x=((x′+last) mod n)+1x = ((x' + \mathit{last}) \bmod n) + 1。
  • 如果是类型 2 查询,则 l=((l′+last) mod n)+1l = ((l' + \mathit{last}) \bmod n) + 1,r=((r′+last) mod n)+1r = ((r' + \mathit{last}) \bmod n) + 1。如若 l>rl > r,则将两者交换。

请务必在回答每一个类型 2 查询后更新 last\mathit{last} 的值。

输入保证至少有一个类型 2 的查询。

输出格式

对于每一个类型 2 的查询,输出一个整数,即满足条件的索引对 (i,j)(i, j) 的数量,其中 l≤i<j≤rl \le i < j \le r 且 ai≠aja_i \ne a_j。

本翻译由 AI 自动生成

输入输出样例

  • 输入#1

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

    输出#1

    3 2 0
  • 输入#2

    7
    1 3 4 4 7 1 3
    3
    2 1 6
    2 1 0
    2 5 6

    输出#2

    13 18 0

输入解题思路,AI测评打分。不知道怎么写?

首页