
数学-组合数
Endless_Way
这个作者很懒,什么都没留下…
展开
-
BZOJ 2111 [ZJOI2010]Perm 排列计数
组合数+Lucas定理题目可以转化成求1~n排列的小根堆数目,那么对于每一个i位置,他的子树节点个数是确定的,记为f[i],那么有f[i]=C(siz[i-1],siz[i<<1])*f[i<<1]*f[i<<1|1]注意到n可能大于p,套Lucas定理即可【Lucas定理】注意,当且仅当p是质数时才可以用Lucas定理。在不考虑求逆元的情况下,单次时间复杂度O(logpn)O(log_pn)#in原创 2016-09-28 11:35:11 · 302 阅读 · 0 评论 -
UOJ 22 [UR #1]外星人
DP+推式子+组合数+逆元我们发现如果ai<=aj,那么x mod ai = x mod ai mod aj,即模了小的数,大的数模不模就都一样。于是我们发现x的值的变化仅和小于等于x的a有关。于是可以记f[i]表示x=i的最大答案,这个可以O(nx)DP出来,第一问解决。我们发现从i变化到i%a的过程中需要的序列里,(i%a , i]区间里的所有模数可以任意排布在a的后面而不会影响结果(因为这里面原创 2016-10-15 18:12:25 · 517 阅读 · 0 评论 -
BZOJ 4517 [Sdoi2016]排列计数
组合数+错排答案 = C(n,m) * h(n-m)#include<cstdio>#define MOD 1000000007#define N 1000005using namespace std;namespace runzhe2000{ typedef long long ll; int h[N], fac[N], inv[N]; void main()原创 2017-01-29 15:00:05 · 259 阅读 · 0 评论