#1160. 扰乱神器

扰乱神器

题目描述

D 君是潜伏在 Mars 星的间谍,D 君携带着从母星带来的扰乱神器,用于扰乱 Mars 星的晶体防御序列。Mars 星的晶体防御序列由 2n2^n 块晶体组成,第 ii 块晶体的能量为 pip_i。

晶体防御序列的扰乱度定义为序列中的逆序对数,即满足 i<ji<j 且 pi>pjp_i>p_j 的下标对 (i,j)(i,j) 的数量。

由于 Mars 星的晶体存在自适应能力,如果某个固定的防御序列持续过久,该序列的扰乱度就不再对晶体防御序列造成威胁了。因此 D 君对 Mars 星的晶体防御序列进行了 mm 次扰乱。第 ii 次扰乱用三个整数 qi,li,riq_i,l_i,r_i 表示:

  1. 将当前晶体防御序列从左到右分为 2qi2^{q_i} 个连续的块,每块包含 2n−qi2^{n-q_i} 块晶体,块从 11 开始编号。
  2. 选择第 lil_i 到第 rir_i 个块。
  3. 分别将每个被选中的块内部的晶体顺序翻转,被选中块之间的先后顺序不变。

每次操作都在上一次操作得到的序列上进行。D 君想知道每次扰乱操作后,整个晶体防御序列的扰乱度。

输入格式

从文件 dr.in 中读入数据。

第一行包含两个正整数 n,mn,m。

第二行包含 2n2^n 个整数 p1,p2,…,p2np_1,p_2,\ldots,p_{2^n},表示初始晶体防御序列。

接下来 mm 行,每行包含三个整数 qi,li,riq_i,l_i,r_i,表示一次扰乱操作。

输出格式

输出到文件 dr.out 中。

输出 mm 行,每行包含一个整数,表示对应操作后晶体防御序列的扰乱度。

样例 1 输入

3 10
7 3 3 3 8 6 5 3
1 1 1
2 2 2
2 1 3
1 1 2
0 1 1
2 2 2
0 1 1
0 1 1
1 1 1
1 1 2

样例 1 输出

9
10
8
7
15
14
8
14
12
17

样例 1 解释

第一次操作将序列分成两个长度为 44 的块,翻转第一个块后得到 3,3,3,7,8,6,5,33,3,3,7,8,6,5,3,逆序对数为 99。

第二次操作将当前序列分成四个长度为 22 的块,翻转第二个块后得到 3,3,7,3,8,6,5,33,3,7,3,8,6,5,3,逆序对数为 1010。

样例 2

见选手目录下的 dr/dr2.in 与 dr/dr2.ans。

该样例满足第 3∼43\sim4 个测试点的限制,其中 n=10,m=1000n=10,m=1000。

样例 3

见选手目录下的 dr/dr3.in 与 dr/dr3.ans。

该样例满足第 5∼85\sim8 个测试点的限制,其中 n=20,m=105n=20,m=10^5,每次操作选择全部块。

样例 4

见选手目录下的 dr/dr4.in 与 dr/dr4.ans。

该样例满足第 9∼129\sim12 个测试点的限制,其中 n=20,m=105n=20,m=10^5,每次操作只选择一个块。

样例 5

见选手目录下的 dr/dr5.in 与 dr/dr5.ans。

该样例满足第 13∼2013\sim20 个测试点的限制,其中 n=20,m=105n=20,m=10^5。

数据范围

对于所有测试数据,保证:

  • 1≤n≤201\le n\le20,1≤m≤1051\le m\le10^5。
  • 1≤pi≤2n1\le p_i\le2^n。
  • 0≤qi<n0\le q_i<n,1≤li≤ri≤2qi1\le l_i\le r_i\le2^{q_i}。

本题共有 2020 个测试点,每个测试点 55 分,各测试点独立计分。

测试点编号 n≤n\le m≤m\le 特殊性质
1∼21\sim2 55 1010 无
3∼43\sim4 1010 10001000
5∼85\sim8 2020 10510^5 每次操作均满足 li=1,ri=2qil_i=1,r_i=2^{q_i}
9∼129\sim12 每次操作均满足 li=ril_i=r_i
13∼2013\sim20 无

统计

相关

在下列比赛中:

第四套