CFCF2147F.Exchange Queries

省选/NOI-

通过率:0%

AC君温馨提醒

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

题目描述

你现在在一个市场上,有两个交易者愿意就 nn 种不同的物品进行交易。每个交易者由一个排列表示,表示对于该交易者来说这 nn 个物品的相对价值。我们用这两个排列 ppss 来表示。如果你拥有物品 ii,你可以将它与物品 jj 交换,如果 pi>pjp_i > p_j(通过第一个交易者)或者 si>sjs_i > s_j(通过第二个交易者)。

我们称物品 ii 至少和物品 jj 一样有价值,如果你可以带着物品 ii 来到市场,经过若干次(也可以为零次)交换,最终得到物品 jj。注意,在任意时刻,你手上始终只有一个物品,并且交易者可以无限次提供任意物品。

由于市场在不断变化,交易者也会频繁地重新评价物品的价值。你将会得到 qq 次操作,每次是某个排列上的一次交换。每次操作后,你需要输出所有满足物品 ii 至少和物品 jj 一样有价值的有序对 (i,j)(i, j) 共多少对。

输入格式

每组测试数据包含多组测试用例。第一行输入测试用例数量 tt1t1041 \leq t \leq 10^4)。

每组测试用例的第一行输入两个整数 nnqq2n1052 \leq n \leq 10^51q1051 \leq q \leq 10^5)。

接下来的两行,每行分别输入初始排列 ppss

接下来 qq 行,每行输入三个整数 tptpiijjtp{1,2}tp \in \{1, 2\}1i,jn1 \leq i, j \leq niji \neq j)。 若 tp=1tp=1,则交换 pip_ipjp_j; 若 tp=2tp=2,则交换 sis_isjs_j

保证所有测试用例的 nn 之和不超过 10510^5qq 之和不超过 10510^5

输出格式

对于每个测试用例,输出 qq 行,第 kk 行输出经过第 kk 次操作后,满足物品 ii 至少和物品 jj 一样有价值的有序对 (i,j)(i, j) 的数量。

输入输出样例

  • 输入#1

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

    输出#1

    6
    9
    9
    12
    11

说明/提示

在第一个测试用例中,第一次操作后,两组排列都是本原排列,因而只有如下 (i,j)(i, j) 对是合法的:(1,1)(1, 1)(2,1)(2, 1)(2,2)(2, 2)(3,1)(3, 1)(3,2)(3, 2)(3,3)(3, 3)。第二次操作后,从任意物品都可以通过若干次交易得到任意其他物品,例如你可以从物品 11 通过第二个交易者换到物品 33,因为 s1=3>1=s3s_1=3 > 1=s_3。第三次操作后仍然可以从任意物品得到任意其他物品,比如,从物品 22 出发想要获得物品 11,可以先通过第二个交易者将物品 22 换为 33,再通过第一个交易者将 33 换为 11

首页