A

考虑把每个abcabc当做一个位置,那么acbacb要么分别位于三个位置,要么acac在一个位置,bb在一个位置,所以答案为C(n,3)+C(n,2)C(n,3)+C(n,2)

B

首先能发现一个结论,一棵树最长直径=度数大于11的节点个数+2(n>1)+2(n>1)

所以我们只需要枚举度数大于11的节点的度数,剩下就是一个插板问题

C​

验题的时候有人写了维护10个变量的矩阵乘法,较为复杂

注意到pp只有100100,我们观察发现一旦三元组(ai,bi,ci)(a_i,b_i,c_i)与之前的(aj,bj,cj)(a_j,b_j,c_j)相同

那么这个序列就构成了循环

(ai,bi,ci)(a_i,b_i,c_i)只有10610^6种,所以直接暴力即可

D

首先二分答案,那么问题变成是否有一个区间满足aa的和>mid>midbb的和>mid>mid

转化成前缀和变成sum1[r]sum1[l1]>mid,sum2[r]sum2[l1]>midsum1[r]-sum1[l-1]>mid,sum2[r]-sum2[l-1]>mid

考虑从左到右扫描序列,将sum1sum1映射到树状数组的下标,sum2sum2对应到树状数组维护的值

时间复杂度:nlog2nnlog^2n

这个题也可以做到一个loglog

强制令sum1[r]sum1[l1]<sum2[r]sum2[l1]sum1[r]-sum1[l-1]<sum2[r]-sum2[l-1]

那么我们其实只需要找到满足这个的sum1[r]sum1[l1]sum1[r]-sum1[l-1]的最大值即可

扫一遍直接维护即可

由于nn只有10510^5,两种做法都可以通过

E

观察题目保证aia_i互不相同

打表发现可能同时出现在SS集合和TT集合的只有150150294294

枚举这两个数到底在SS集合还是TT集合,问题变成了比较经典的拆边费用流

对于流量从1m1\sim m,每次增加11的流量跑一次spfaspfa

F

两点距离dis(i,j)dis(i,j)可以看成(xi,xj)(x_i,x_j)(yi,yj),(yj,yi)(y_i,y_j),(y_j,y_i)的哈夫曼距离取minmin

将坐标系旋转4545度,到一个点哈夫曼距离相同的点是一个正方形

于是每一次33操作其实只需要查询两个矩形的并内的点的个数

由于这两个矩形是平行的 所以矩形的并要么是一个大矩形 要么是两个小矩形

这个可以利用树套树或者离线三维偏序维护

对于每次22操作考虑重构,等价于查询nn个矩阵内有多少个点

这个可以扫描线+树状数组统计

总时间复杂度nlog2nnlog^2{n}

由于时间没有卡的很紧,赛时一些nlog3nnlog^3{n}的做法也通过了

G

首先不考虑晋升,那么每个位置上的选择可以写成1yx,1yy1yx2+1y(y1y)2x3+...\frac{1}{y}*x,\frac{1}{y}*\frac{y-1}{y}*x^2+\frac{1}{y}*{(\frac{y-1}{y})}^2*x^3+...

这个可以写成tx1kxt*\frac{x}{1-kx}的形式

于是不晋升时问题就可以用一次分治NTTNTT+求逆来解决

观察到有一次晋升其实是一个前缀多项式乘后缀多项式

把这个转化成全局多项式相乘除掉中间那一段多项式

于是我们可以考虑维护每一段长度为oo的多项式的乘积

考虑从左到右扫过去,相邻两个位置相当于是除掉一个多项式,乘上一个多项式

由于多项式系数只有1,所以我们利用类似背包可以O(o)O(o)维护

总时间复杂度nlog2n+nonlog^2{n}+no