T1T1

解:离线处理,先将所有询问按右端点排序,用mp数组存储颜色位置每次如果遇到一个重复的颜色,就将 mp[i] 更新为当前位置,这样就能避免重复情况,最后就能直接用前缀和了

T2T2

解:这道题要先把它转化一下,先把数组排序一下,按照 aa 数组从小到大,如果 aa 数组相等,就按 bb 数组从大到小排序。接下来,我们要对 bb 数组进行离散化。再我们枚举每一个点,求出它后面有多少个 aia_iai+1a_{i+1} 相等且 bib_ibi+1b_{i+1} 相等的元素,记为 cntcnt。于是,我们可以按照四分之一楼兰图腾去做,看看前面有多少个比当前的 bib_i 大,记为 numnum,就可以组成 numcnt+cnt2num·cnt+cnt^2 个方案,将其累加到答案中,最后输出答案即可。

T3T3

首先,题目给的公式固然是不可用的:

$$\sum_{i=1}^n\sum_{j=i+1}^n \max\left(a_j-a_i,0\right)$$

我们可以画个图来理解公式:

(没时间画了,稍微借用一下别人的图片(>人<;)对不起)

可以发现,我们要求的答案就是红色减蓝色。

推出求红色的公式:

i=1nai×(i1)\sum_{i=1}^n a_i\times (i-1)

再推出算蓝色部分的公式:

i=1n1ai×(ni)\sum_{i=1}^{n-1} a_i\times (n-i)

最终答案为红色(排序前)减蓝色(排序后)(不要问为什么,问就是教训):

$$\sum_{i=1}^n a_i\times (i-1)-\sum_{i=1}^{n-1} a_i\times (n-i)$$

直接算就行了

T5T5

解:由于题目的交换方式,显而易见的是,ai+ia_i+i 始终相等,所以我们可以先将两个数组的 a[i]+i 算出来后排序以判否,随后我们根据贪心策略(小的去小的,大的去大的)求出每个位置交换次数,最后求逆序对即可。