C. 三值逆序对

    传统题 1000ms 256MiB

三值逆序对

该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。

【题目描述】

小灰灰最近特别喜欢研究那些很长很简单的序列,他有一个仅由数字 {1,2,3}\{1,2,3\} 构成的长度为 nn 的序列,第 ii 个元素是 aia_i

小灰灰想考考小蓝,于是他询问小蓝,这个序列中逆序对的个数是多少。

如果存在一对元素前面的元素比后面的元素数值大,那么它们就构成一对逆序对。

  • 形式化地说,若存在一对有序对 (i,j)(i,j),满足 i<ji<jai>aja_i>a_j,那么这个有序对就是逆序对。

你需要编程求出序列中逆序对的个数。


【输入描述】

第一行输入一个整数 nn

第二行输入 nn 个整数,第 ii 个整数表示 aia_i

保证:

  • 1n1051\le n\le 10^5
  • ai{1,2,3}a_i\in\{1,2,3\}

【输出描述】

输出一行一个整数,表示序列中逆序对的个数。


【样例 1】

【样例 1 输入】

3
3 1 2

【样例 1 输出】

2

【样例 1 解释】

序列为 3,1,23,1,2

其中 (1,2)(1,2) 满足 a1=3>a2=1a_1=3>a_2=1,构成一对逆序对。

(1,3)(1,3) 满足 a1=3>a3=2a_1=3>a_3=2,也构成一对逆序对。

除此之外没有其它逆序对,所以答案为 22


【样例 2】

【样例 2 输入】

10
2 3 1 2 1 3 2 1 3 1

【样例 2 输出】

19

【样例 2 解释】

统计所有满足前面的数大于后面的数的位置对,一共有 1919 对。


【样例 3】

见选手目录下的 Data/sample3.inData/sample3.ans

该样例满足 n1000n\le 1000


【样例 4】

见选手目录下的 Data/sample4.inData/sample4.ans

该样例满足 ai{1,2}a_i\in\{1,2\}


【样例 5】

见选手目录下的 Data/sample5.inData/sample5.ans

该样例无特殊性质。


【数据规模与约定】

测试点编号 分数 特殊性质
1 ~ 5 15 n1000n \le 1000
6 ~ 10 35 ai{1,2}a_i\in\{1, 2\} 即数字仅包含 1 和 2
11 ~ 15 50

点击下载本题选手目录

2026 夏令营选拔复赛

未参加
状态
已结束
规则
OI
题目
6
开始于
2026-7-11 14:30
结束于
2026-7-11 17:30
持续时间
3 小时
主持人
参赛人数
57