2111: [ZJOI2010]Perm 排列计数
来源:互联网 发布:不义联盟网络对战模式 编辑:程序博客网 时间:2024/05/29 13:27
题目链接
题目大意:magic数列当且仅当2<=i<=N时,Pi>Pi/2,求magic数列数量
题解:第一项为1,把i的两个儿子看做i*2和i*2+1,这样就形成了一颗以1为根的有根树,然后按照小根堆填就好了,变成求堆的数量
NOTICE:这个P是输入的,可能n>p导致p|n从而np不互质,求组合数不能直接用逆元,要用lucas定理
我的收获:逆元,逆元……
#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namespace std;#define M 1001001typedef long long ll;ll n,P,size[M<<1],f[M];ll fac[M]={1,1},I[M]={1,1},inv[M]={1,1};void Linear_Shaker(){ for(int i=2;i<=n;i++){ fac[i]=fac[i-1]*i%P; I[i]=(P-P/i)*I[P%i]%P; inv[i]=inv[i-1]*I[i]%P; }}ll C(ll x,ll y){ if(x<y) return 0; if(x<P&&y<P) return fac[x]*inv[y]%P*inv[x-y]%P; return C(x/P,y/P)*C(x%P,y%P)%P;}void work(){ for(int i=n;i>=1;i--) { size[i]=size[i<<1]+size[i<<1|1]+1; f[i]=C(size[i]-1,size[i<<1])*((i<<1)>n?1:f[i<<1])%P*((i<<1|1)>n?1:f[i<<1|1])%P; } cout<<f[1]<<endl;}void init(){ cin>>n>>P; Linear_Shaker();}int main(){ init(); work(); return 0;}
阅读全文
0 0
- 2111: [ZJOI2010]Perm 排列计数
- 【BZOJ 2111】 [ZJOI2010]Perm 排列计数
- BZOJ 2111 [ZJOI2010]Perm 排列计数
- 【BZOJ】2111 [ZJOI2010] Perm 排列计数
- bzoj2111【ZJOI2010】Perm 排列计数
- 【bzoj2111】[ZJOI2010]Perm 排列计数
- BZOJ2111 [ZJOI2010]Perm 排列计数
- BZOJ2111: [ZJOI2010]Perm 排列计数
- bzoj2111 [ZJOI2010]Perm 排列计数
- BZOJ 2111: [ZJOI2010]Perm 排列计数(简单组合数学)
- BZOJ 2111 ZJOI2010 Perm 排列计数 组合数学+Lucas定理
- 2111: [ZJOI2010]Perm 排列计数 DP+组合数学
- BZOJ 2111: [ZJOI2010]Perm 排列计数 DP+lucas定理
- BZOJ 2111 ZJOI2010 Perm 排列计数 组合数学+Lucas定理
- [BZOJ2111][ZJOI2010]Perm 排列计数 && 数学
- BZOJ 2111: [ZJOI2010]Perm 排列计数|组合数学|Lucas定理|DP
- bzoj 2111: [ZJOI2010]Perm 排列计数 (组合数学+Lucas定理)
- [数学杂题]BZOJ 2111—— [ZJOI2010]Perm 排列计数
- Java邮件客户端发送邮件+附件
- HBase架构与原理
- JavaWeb学习总结(七)——HttpServletResponse对象(一)
- 一次CPU占用过高事件的胡乱解决
- HDU 4424 Conquer a New Region【并查集】【思维题】
- 2111: [ZJOI2010]Perm 排列计数
- SOA标准之----SCA架构思想
- javaWeb过滤器
- 归并排序
- es6新特性-Set和Map数据结构
- Heroku创始人Adam Wiggins发布十二要素应用宣言
- JavaWeb学习总结(八)——HttpServletResponse对象(二)
- socket通信---UDP通信
- Linux系统编程——进程替换:exec 函数族