[数学杂题]BZOJ 2111—— [ZJOI2010]Perm 排列计数
来源:互联网 发布:mac软件下载网站排名 编辑:程序博客网 时间:2024/05/19 04:25
题目梗概
求[1,n]有多少个排列满足
解题思路
不难发现排列构成一个小根堆,因此树形可以确定。
然后用
转移方程不难得出。
最主要的是这题虽然P很大但是依然要用Lucas,为什么呢?
因为处理n的阶乘时到后面%P会变成0,所以要限制阶乘的范围。
WA了5发才反应过来。
#include<cstdio>#include<algorithm>#define LL long longusing namespace std;const int maxn=1000005;int n,tt,s[2*maxn];LL ji[maxn],f[maxn];int qsm(LL w,int b){ LL num=1; while(b){ if (b%2==1) num=num*w%tt; w=w*w%tt; b>>=1; } return num;}int c(int x,int y){if (x>y) return 0;return ji[y]*qsm(ji[x]*ji[y-x]%tt,tt-2)%tt;}int Q(int x,int y){int num=1;while(y) num=(LL)num*c(x%tt,y%tt)%tt,x/=tt,y/=tt;return num;}int main(){ freopen("exam.in","r",stdin); freopen("exam.out","w",stdout); scanf("%d%d",&n,&tt); if (tt==1) return printf("0\n"),0; ji[0]=1;for (int i=1;i<=min(n,tt-1);i++) ji[i]=ji[i-1]*i%tt; for (int i=n;i>=1;i--){ s[i]=s[i*2+1]+s[i*2]+1; f[i]=Q(s[i*2],s[i]-1); if (i*2+1<=n) f[i]=f[i]*f[i*2+1]%tt; if (i*2<=n) f[i]=f[i]*f[i*2]%tt; } printf("%lld\n",f[1]); return 0;}
阅读全文
0 0
- [数学杂题]BZOJ 2111—— [ZJOI2010]Perm 排列计数
- BZOJ 2111: [ZJOI2010]Perm 排列计数(简单组合数学)
- BZOJ 2111 ZJOI2010 Perm 排列计数 组合数学+Lucas定理
- BZOJ 2111 ZJOI2010 Perm 排列计数 组合数学+Lucas定理
- 【BZOJ 2111】 [ZJOI2010]Perm 排列计数
- BZOJ 2111 [ZJOI2010]Perm 排列计数
- 【BZOJ】2111 [ZJOI2010] Perm 排列计数
- BZOJ 2111: [ZJOI2010]Perm 排列计数|组合数学|Lucas定理|DP
- bzoj 2111: [ZJOI2010]Perm 排列计数 (组合数学+Lucas定理)
- 2111: [ZJOI2010]Perm 排列计数
- 2111: [ZJOI2010]Perm 排列计数 DP+组合数学
- BZOJ 2111: [ZJOI2010]Perm 排列计数 DP+lucas定理
- [BZOJ2111][ZJOI2010]Perm 排列计数 && 数学
- Bzoj2111:[ZJOI2010]Perm 排列计数:树形动态规划+组合数学
- [BZOJ2111][ZJOI2010]Perm 排列计数(组合数学+lucas定理)
- [bzoj2111][ZJOI2010]Perm 排列计数(组合数学)
- bzoj2111【ZJOI2010】Perm 排列计数
- 【bzoj2111】[ZJOI2010]Perm 排列计数
- Programming Ability Test 乙级真题及训练集1001
- 简单的三个步骤汉化Intelj IDEA
- HDOJ 2710 Max Factor(打表)
- spring boot学习三:基于jsp的spring mvc示例
- 关于responsbody
- [数学杂题]BZOJ 2111—— [ZJOI2010]Perm 排列计数
- guava做本地缓存
- annotation-@RequestBody-接收前端传来的json
- 关于onclick = “函数()”中不能调用window.onload = function(){}中调用function 函数(){}
- pandas---Series基础使用
- 注释转换
- 统计学习方法(第三章)k近邻算法
- 初级web api的设计(二)——防重放攻击
- 神经网络 tensorflow教程 2.2 下载MNIST 数据集 (自动版)