- 博客(3)
- 收藏
- 关注
原创 康托展开 and 逆康托展开
其实也就是,对于第i个位置,如果x < a[i],那么不管它后面的数如何排列,这个排列一点会比该排列小,也就是后面比它小的数 P(a[i]) * (n-i)!,找a[i]后面比它小的数的个数这一过程可以用树状数组优化,下面是洛谷模板以及ac代码;(2)然后令 t = x / fac[n-1],其中fac[n-1]就是n-1的阶乘,得到的t就是康托展开中的在i后面比a[i]小的数的个数,由此就能推出这个数是几;其中P(a[i])表示a[i]后面比a[i]大的数的个数,(n-i)!(1)首先将x - 1;
2024-03-31 23:15:16 394
原创 第二类斯特林数
它的格式很像卷积,可以利用FFT,实现O(nlogn)求出某一行,现在还太菜了遇不到,画个饼,等大二暑假再学。S(n,m):把n个球放入m个无区别的盒子里的方案数。通解:(图片在某位佬的博客偷的)
2024-02-03 17:25:00 361 1
原创 算法学习:根号分治
仔细想想,是把两种方法的缺点互相弥补了,第一种方法的缺点在于当x较小时复杂度过高,最坏能达到O(n),加了d的限制后,复杂度就是O(sqrt(n))了,第二种方法的缺点就是受到空间限制,x不能太大,加了d的限制,正好互补,总的时间复杂度能达到O(q*sqrt(n))。当x > d时,用第一种模拟去实现。再想第二种方法,可以用一个pre[i][j]来优化操作二,pre[i][j]表示模i等于j的和,这样就能O(1)得到操作二了,但是对于操作1,又需要枚举模数,去加在pre中,时间复杂度是O(x)。
2024-01-16 22:01:21 374
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人