CF1443E.Long Permutation

提高+/省选-

通过率:0%

AC君温馨提醒

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

题目描述

一个排列是一个长度为 nn 的整数序列,包含从 11 到 nn 的每个数字且每个数字恰好出现一次。例如,[1][1]、[4,3,5,1,2][4, 3, 5, 1, 2]、[3,2,1][3, 2, 1] 都是排列,而 [1,1][1, 1]、[4,3,1][4, 3, 1]、[2,3,4][2, 3, 4] 不是排列。

如果两个长度相同的排列 aa 和 bb,在第一个不同的位置 ii 满足 a[i]<b[i]a[i] < b[i],则称排列 aa 字典序小于排列 bb。例如,排列 [1,3,2,4][1, 3, 2, 4] 字典序小于排列 [1,3,4,2][1, 3, 4, 2],因为前两个元素相等,第三个元素第一个排列更小。

对于长度为 nn 的排列 aa,它的下一个排列是长度为 nn 的、字典序大于 aa 的最小排列。例如:

  • 对于排列 [2,1,4,3][2, 1, 4, 3],下一个排列是 [2,3,1,4][2, 3, 1, 4];
  • 对于排列 [1,2,3][1, 2, 3],下一个排列是 [1,3,2][1, 3, 2];
  • 对于排列 [2,1][2, 1],不存在下一个排列。

给定一个整数 nn,初始排列为 a=[1,2,…,n]a = [1, 2, \ldots, n],即 a[i]=ia[i] = i(1≤i≤n1 \le i \le n)。

你需要处理 qq 个操作,操作有两种类型:

  • 1 l r1\ l\ r:查询区间 [l,r][l, r] 上所有元素的和。更正式地说,需要计算 a[l]+a[l+1]+…+a[r]a[l] + a[l+1] + \ldots + a[r]。
  • 2 x2\ x:将当前排列替换为它的下一个排列,重复 xx 次。例如,如果 x=2x=2 且当前排列为 [1,3,4,2][1, 3, 4, 2],则执行如下变化链 [1,3,4,2]→[1,4,2,3]→[1,4,3,2][1, 3, 4, 2] \rightarrow [1, 4, 2, 3] \rightarrow [1, 4, 3, 2]。

对于每个 11 型操作,输出所需的区间和。

输入格式

第一行包含两个整数 nn(2≤n≤2×1052 \le n \le 2 \times 10^5)和 qq(1≤q≤2×1051 \le q \le 2 \times 10^5),分别表示初始排列的长度和操作数。

接下来的 qq 行,每行表示一个操作。11 型操作包含三个整数 1 l r1\ l\ r(1≤l≤r≤n1 \le l \le r \le n),22 型操作包含两个整数 2 x2\ x(1≤x≤1051 \le x \le 10^5)。

保证所有 22 型操作都可以被执行。

输出格式

对于每个 11 型操作,输出一行一个整数,表示所求的区间和。

输入输出样例

  • 输入#1

    4 4
    1 2 4
    2 3
    1 1 2
    1 3 4

    输出#1

    9
    4
    6

说明/提示

初始排列为 [1,2,3,4][1, 2, 3, 4]。操作过程如下:

  1. 2+3+4=92 + 3 + 4 = 9;
  2. [1,2,3,4]→[1,2,4,3]→[1,3,2,4]→[1,3,4,2][1, 2, 3, 4] \rightarrow [1, 2, 4, 3] \rightarrow [1, 3, 2, 4] \rightarrow [1, 3, 4, 2];
  3. 1+3=41 + 3 = 4;
  4. 4+2=64 + 2 = 6。

由 ChatGPT 4.1 翻译

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

首页