BZOJ2111 [ZJOI2010]Perm 排列计数
来源:互联网 发布:网络教育高起专专升本 编辑:程序博客网 时间:2024/06/05 01:00
我们把整个序列看成一棵树,x的左儿子是2x,右儿子是2x+1
这样问题就变成了给这棵树标号,儿子的标号必须比父亲大
dp即可
f[i]表示以i为根的子树,在标号集合已经确定的情况下的标号方案数
如果i是叶子,f[i]=1
如果i只有1个儿子,f[i]=f[2i]
如果i有两个儿子,f[i]=f[2i]*f[2i+1]*C(siz[2i]+siz[2i+1],siz[2i])
siz为子树大小
算组合数用lucas
#include<iostream>#include<cstdlib>#include<cstdio>#include<cstring>#include<ctime>#include<cmath>#include<algorithm>#include<iomanip>#include<queue>#include<map>#include<bitset>#include<stack>#include<vector>#include<set>using namespace std;#define MAXN 1000010#define MAXM 1010#define INF 1000000000#define MOD 1000000007#define ll long long#define eps 1e-8int n,p;ll fac[MAXN],ine[MAXN];ll f[MAXN];int siz[MAXN];ll C(int n,int m){if(m>n){return 0;}if(n<p){return fac[n]*ine[m]%p*ine[n-m]%p;}return C(n/p,m/p)*C(n%p,m%p)%p;}int main(){int i;scanf("%d%d",&n,&p);fac[0]=ine[0]=ine[1]=1;for(i=1;i<=n&&i<p;i++){fac[i]=fac[i-1]*i%p;}for(i=2;i<=n&&i<p;i++){ine[i]=(p-p/i)*ine[p%i]%p;}for(i=2;i<=n&&i<p;i++){(ine[i]*=ine[i-1])%=p;}for(i=n;i;i--){if(i*2+1<=n){siz[i]=1+siz[i*2]+siz[i*2+1];f[i]=f[i*2]*f[i*2+1]%p*C(siz[i]-1,siz[i*2])%p;}else if(i*2<=n){f[i]=f[i*2];siz[i]=1+siz[i*2];}else{f[i]=1;siz[i]=1;}}printf("%lld\n",f[1]);return 0;}/**/
0 0
- bzoj2111【ZJOI2010】Perm 排列计数
- 【bzoj2111】[ZJOI2010]Perm 排列计数
- BZOJ2111 [ZJOI2010]Perm 排列计数
- BZOJ2111: [ZJOI2010]Perm 排列计数
- bzoj2111 [ZJOI2010]Perm 排列计数
- [BZOJ2111][ZJOI2010]Perm 排列计数 && 数学
- 【bzoj2111】【zjoi2010】【perm排列计数】【dp+Lucas定理】
- Bzoj2111:[ZJOI2010]Perm 排列计数:树形动态规划+组合数学
- [BZOJ2111][ZJOI2010]Perm 排列计数(组合数学+lucas定理)
- [bzoj2111][ZJOI2010]Perm 排列计数(组合数学)
- 【递推+lucas定理】BZOJ2111 [ZJOI2010]Perm 排列计数
- 2111: [ZJOI2010]Perm 排列计数
- bzoj2111 Perm 排列计数 组合数学
- 【BZOJ 2111】 [ZJOI2010]Perm 排列计数
- BZOJ 2111 [ZJOI2010]Perm 排列计数
- 【BZOJ】2111 [ZJOI2010] Perm 排列计数
- [BZOJ2111][ZJOI2010]排列计数(DP+组合数)
- BZOJ 2111: [ZJOI2010]Perm 排列计数(简单组合数学)
- Android之Handler在新线程中处理消息
- QT中设置构建步骤
- 概念运用:标记
- 软件测试基础——软件测试概念
- JVM学习笔记(二)JVM判断对象是否”存活”
- BZOJ2111 [ZJOI2010]Perm 排列计数
- linux下查看Mysql默认编码、修改默认编码
- node.js之express简单地框架登陆请求和相应
- 制作一个自己的xhprof测试平台
- 二叉树 完全二叉树 满二叉树 平衡二叉树
- tcp自连接问题
- 005_深入浅出mysql—存储过程和函数
- imx6q yocto修改device tree中uart管脚配置
- replaceScene和pushScene