Codeforces Round #232 (Div. 1) ABCD

来源:互联网 发布:明通网络数码科技wifi 编辑:程序博客网 时间:2024/06/04 17:54

题目链接

代码链接

个人感觉本场题目的排列真是坑爹啊。。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

2 0
原创粉丝点击