个人感觉本场题目的排列真是坑爹啊。。CD明显应该和AB换个位置- -b(好吧其实就是弱)
A:
将所有数分解质因数并统计每个质因数的个数,对于质数pi,有ci个,设f(ci)表示把这ci个相等的数放到n个箱子里的方法种数(C(ci+n-1,n-1)),那么答案就是f(c1)*f(c2)*....f(cn)
B:
对于相邻的两个质数pi和pi+1,他们之间的数字个数为pi+1 - pi,那么sigma(1/(v(i)*u(i))) = (3-2)/(3*2) + (5-3)/(3*5) + (7-5)/(5*7)....,
通分后可化简为1/2 - 1/v(n) + (n-v(n))/(v(n)*u(n))
然后一个小姿势:10^18范围内的素数分布相对稠密,
这个也就是说,v(n)和u(n)可以for循环暴力去找,并且用sqrt(n)的算法来判断都是没有问题的
然后就结束了
C:
CF最近特别喜欢出的树转区间线段树问题
把树按照dfs序展开成区间,这个相信大家会了,
这题其实就是y=kx+b线性方程的区间更新,那么就维护两棵树状数组(或者线段树),一棵维护k,另一棵维护b(b是指对于深度为0的节点要增加的值)
然后就没有然后了。
然后本弱没取模fst了!
然后本弱挂0 了。。
D:
求字典序小于给定排列的所有排列的逆序对数量
按照类似数位DP的做法从左到右推过去就好了,考虑第i位小于a[i]的情况,然后令第i为等于a[i],再去递推第i+1位,
是要预处理一些东西:
A[i] : i的阶乘
C[i] : i个数的全排列的逆序对数量
D[i] : 1+2+3+4+.....i