【BZOJ1485】[HNOI2009]有趣的数列(组合数学)

时间:2022-12-20 15:55:55

【BZOJ1485】[HNOI2009]有趣的数列(组合数学)

题面

BZOJ

洛谷

题解

从小往大填数,要么填在最小的奇数位置,要么填在最小的偶数位置。

偶数位置填的数的个数不能超过奇数位置填的数的个数。

好的,卡特兰数。

诶,woc,我不会卡特兰数啊。行,来学一下。

\(H(0)=H(1)=1\)

\(H(n)=\sum_{i=0}^{n-1} H(i)H(n-i-1)\)

\(H(n)=H(n-1)*\frac{4n-2}{n+1}\)

\(H(n)=\frac{C_{2n}^n}{n+1}=C_{2n}^n-C_{2n}^{n+1}\)

前几项是\(1,1,2,5,14,42,132......\)

我\(NOI\)的时候就因为不会卡特兰数少得了\(12\)分,菜死。

那么这题直接算分子分母两个部分的质因子,然后手动除一下再乘,这样与逆元无关了。

#include<iostream>
#include<cstdio>
using namespace std;
#define MAX 2000100
int n,P,ans=1;
int pri[MAX],a[MAX],tot;
bool zs[MAX];
void pre(int n)
{
for(int i=2;i<=n;++i)
{
if(!zs[i])pri[++tot]=i;
for(int j=1;j<=tot&&i*pri[j]<=n;++j)
{
zs[i*pri[j]]=true;
if(i%pri[j]==0)break;
}
}
}
void Divide(int x,int w)
{
for(int i=1;i<=tot&&pri[i]*pri[i]<=x;++i)
while(x%pri[i]==0)x/=pri[i],a[pri[i]]+=w;
if(x>1)a[x]+=w;
}
int fpow(int a,int b)
{
int s=1;
while(b){if(b&1)s=1ll*s*a%P;a=1ll*a*a%P;b>>=1;}
return s;
}
int main()
{
scanf("%d%d",&n,&P);pre(n+n);Divide(n+1,-1);
for(int i=n+n;i>n;--i)Divide(i,1);
for(int i=n;i;--i)Divide(i,-1);
for(int i=1;i<=n+n;++i)ans=1ll*ans*fpow(i,a[i])%P;
printf("%d\n",ans);
return 0;
}

【BZOJ1485】[HNOI2009]有趣的数列(组合数学)的更多相关文章

  1. bzoj1485&colon; &lbrack;HNOI2009&rsqb;有趣的数列&lpar;Catalan数&rpar;

    1485: [HNOI2009]有趣的数列 Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 2105  Solved: 1117[Submit][Stat ...

  2. &lbrack;bzoj1485&rsqb;&lbrack;HNOI2009&rsqb;有趣的数列&lowbar;卡特兰数&lowbar;组合数

    有趣的数列 bzoj-1485 HNOI-2009 题目大意:求所有1~2n的排列满足奇数项递增,偶数项递增.相邻奇数项大于偶数项的序列个数%P. 注释:$1\le n\le 10^6$,$1\le ...

  3. BZOJ1485&colon; &lbrack;HNOI2009&rsqb;有趣的数列

    Description 我们称一个长度为2n的数列是有趣的,当且仅当该数列满足以下三个条件: (1)它是从1到2n共2n个整数的一个排列{ai}: (2)所有的奇数项满足a1<a3<…&l ...

  4. 【卡特兰数】BZOJ1485&colon; &lbrack;HNOI2009&rsqb;有趣的数列

    Description 我们称一个长度为2n的数列是有趣的,当且仅当该数列满足以下三个条件: (1)它是从1到2n共2n个整数的一个排列{ai}: (2)所有的奇数项满足a1<a3<…&l ...

  5. BZOJ1485&colon;&lbrack;HNOI2009&rsqb;有趣的数列&lpar;卡特兰数&rpar;

    Description 我们称一个长度为2n的数列是有趣的,当且仅当该数列满足以下三个条件: (1)它是从1到2n共2n个整数的一个排列{ai}: (2)所有的奇数项满足a1<a3<…&l ...

  6. BZOJ1485&colon; &lbrack;HNOI2009&rsqb;有趣的数列&lpar;Catalan数&comma;质因数分解求组合数&rpar;

    题意 挺简洁的. 我们称一个长度为2n的数列是有趣的,当且仅当该数列满足以下三个条件: (1)它是从1到2n共2n个整数的一个排列{ai}: (2)所有的奇数项满足a1<a3<…<a ...

  7. bzoj1485&colon; &lbrack;HNOI2009&rsqb;有趣的数列(Catalan数)

    一眼卡特兰数...写完才发现不对劲,样例怎么输出$0$...原来模数不一定是质数= =... 第一次见到模数不是质数的求组合数方法$(n,m\leq 10^7)$,记录一下... 先对于$1$~$n$ ...

  8. &lbrack;luogu1485 HNOI2009&rsqb; 有趣的数列 &lpar;组合数学 卡特兰数&rpar;

    传送门 Solution 卡特兰数 排队问题的简单变化 答案为\(C_{2n}^n \pmod p\) 由于没有逆元,只好用分解质因数,易证可以整除 Code //By Menteur_Hxy #in ...

  9. BZOJ1485&colon; &lbrack;HNOI2009&rsqb;有趣的数列&lpar;卡特兰数+快速幂&rpar;

    题目链接 传送门 题面 思路 打表可以发现前六项分别为1,2,5,12,42,132,加上\(n=0\)时的1构成了卡特兰数的前几项. 看别人的题解说把每一个数扫一遍,奇数项当成入栈,偶数项当成出栈, ...

随机推荐

  1. 树莓派摄像头模块转成H264编码通过RTMP实现Html输出

    官方原帖 http://www.raspberrypi.org/phpBB3/viewtopic.php?f=43&t=45368&sid=b81f6551e478f0f6e172aa ...

  2. django 模版语法及使用

    模版的定义 模版是一个文本,用语分离文档的表现形式和内容,通常用于生成html 模版当中能够使用的python语法非常少,for ,if 之类,还有ifequal,结束的时候也要写endifequal ...

  3. swift 实现复制粘贴功能。

    let past = UIPasteboard.generalPasteboard() past.string = pasteboardStr // pasteboardStr就是你要复制的字符串 S ...

  4. oracle dump event

    一.Memory Dumps 1).Global Area ALTER SESSION SET EVENTS 'immediate trace name global_area level n'; 1 ...

  5. 微价值:专訪《甜心爱消除》个人开发人员Lee,日入千元&excl;

    [导语]我们希望能够对一些个人开发人员进行专訪,这样大家更能显得接地气,看看人家做什么,怎么坚持.<甜心爱消除>作者Lee是三群的兄弟,也关注微价值.微价值的文章还是能够的,得到一些业内大 ...

  6. Shell 传递参数

    Shell 传递参数 向脚本传递参数,格式为:$n. 向脚本传递三个参数,并分别输出: echo "Shell 传递参数实例!"; echo "第一个参数为:$1&quo ...

  7. js对象数组&lpar;JSON&rpar; 根据某个共同字段 分组

    首先判断 var arr = [ {"id":"1001","name":"值1","value": ...

  8. redis 系列21 复制Replication &lpar;上&rpar;

    一.   概述 使用和配置主从复制非常简单,每次当 slave 和 master 之间的连接断开时, slave 会自动重连到 master 上,并且无论这期间 master 发生了什么, slave ...

  9. TZOJ 1221 Tempter of the Bone&lpar;回溯&plus;剪枝&rpar;

    描述 The doggie found a bone in an ancient maze, which fascinated him a lot. However, when he picked i ...

  10. spring数据源

    包含三部分内容 1.spring jdbc 2. spring datasource 3.spring Connection pooling 完整的项目请往百度云盘下载: https://pan.ba ...