首先考虑dp,设f[i,j]表示1~i用过了,期中j个放在偶数位然后转移大家都会

这显然TLE,我们观察这个dp,任意前i个数,无论怎么放,放在奇数位的数的个数一定要大于等于放在偶数位的个数

于是很明显这是经典的卡特兰数模型

注意这里涉及到了除法取模,而模数不一定是质数

很显然的想法是分解质因数然后约分

但有更漂亮的做法,http://blog.csdn.net/jasonzhu8/article/details/5949622

 var v,b,p:array[..] of longint;
n,i,j,mo,t:longint;
ans:int64; procedure calc(x,w:longint);
begin
while v[x]<> do
begin
inc(b[v[x]],w);
x:=x div v[x];
end;
inc(b[x],w);
end; function quick(x:int64;y:longint):int64;
begin
quick:=;
while y> do
begin
if y mod = then quick:=quick*x mod mo;
y:=y div ;
x:=x*x mod mo;
end;
end; begin
readln(n,mo);
for i:= to *n do
begin
if v[i]= then
begin
inc(t);
p[t]:=i;
end;
for j:= to t do
begin
if int64(i)*int64(p[j])>*n then break;
v[i*p[j]]:=p[j];
if i mod p[j]= then break;
end;
end;
for i:=n+ to *n do
calc(i,);
for i:= to n do
calc(i,-);
ans:=;
for i:= to t do
ans:=ans*quick(p[i],b[p[i]]) mod mo;
writeln(ans);
end.

bzoj1485的更多相关文章

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

    [BZOJ1485][HNOI2009]有趣的数列(组合数学) 题面 BZOJ 洛谷 题解 从小往大填数,要么填在最小的奇数位置,要么填在最小的偶数位置. 偶数位置填的数的个数不能超过奇数位置填的数的 ...

  2. 「BZOJ1485」[HNOI2009] 有趣的数列 (卡特兰数列)

    「BZOJ1485」[HNOI2009] 有趣的数列   Description 我们称一个长度为2n的数列是有趣的,当且仅当该数列满足以下三个条件: (1)它是从1到2n共2n个整数的一个排列{ai ...

  3. [bzoj1485][HNOI2009]有趣的数列_卡特兰数_组合数

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

  4. BZOJ1485: [HNOI2009]有趣的数列

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

  5. bzoj1485:[HNOI2009]有趣的数列

    思路:首先限制数很多,逐步来考虑,限制一很容易满足,考虑限制二,也就是让奇数位和偶数位上的数递增,限制三就是让奇数位上的数小于奇数位加一对应的偶数位上的数,那么我们可以把形成序列的过程看成加数的过程, ...

  6. 【卡特兰数】BZOJ1485: [HNOI2009]有趣的数列

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

  7. 【BZOJ1485】有趣的数列

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

  8. bzoj1485: [HNOI2009]有趣的数列(Catalan数)

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

  9. bzoj1485 有趣的数列

    传送门:https://www.lydsy.com/JudgeOnline/problem.php?id=1485 [题解] Catalan数,注意不能直接用逆元,需要分解质因数. # include ...

随机推荐

  1. python staticmethod classmethod

    http://www.cnblogs.com/chenzehe/archive/2010/09/01/1814639.html classmethod:类方法staticmethod:静态方法 在py ...

  2. 让Ecshop网店系统用户自动登陆

    让Ecshop网店系统用户户自动登陆,打开ecshop includes/init.php文件,可以发现Ecshop系统判断用户的SESSION不存在的时候会去读取存储在COOKIES里面的值.如下代 ...

  3. C语言多线程编程

    HANDLE CreateThread(LPSECURITY_ATTRIBUTES lpThreadAttributes, DWORD dwStackSize, LPTHREAD_START_ROUT ...

  4. IBM MQ

    一,安装 1,先安装必备MQ\MQ60\Prereqs\IES\Setup.exe 2,再安装MQ\MQParms.exe 二,发送方 刚装好后,默认有一个管理器名,可以删除,自己重新建,以防有不可知 ...

  5. linux配置JDK(转载)

    转载自:http://blog.csdn.net/xinxin19881112/article/details/46816385 Linux CentOS 6.6安装JDK1.7 目录 1.下载JDK ...

  6. VB语言基础

    一.常用的关键字 Dim Private Sub  Public End If Else Form Me Single As Integer Unload Do While MessageBox等 二 ...

  7. dnf的动画脚本研究

    . 1.0x00    : 帧数           int16 2.0x02    : 总为1(?) int16 3.0x04  : 资源文件名长度 int32 4.长度+1 :   0,1(未知用 ...

  8. NBTSTAT命令详解

    1. 具体功能    该命令用于显示本地计算机和远程计算机的基于 TCP/IP(NetBT) 协议的 NetBIOS 统计资料. NetBIOS 名称表和 NetBIOS 名称缓存. NBTSTAT  ...

  9. bnuoj 27874 "Center" of [p]erimeter midpoints(计算几何)

    http://www.bnuoj.com/bnuoj/problem_show.php?pid=27874 [题意]: 给你一个三角形三个顶点的坐标ABC,三角形各边取一点DEF,将三角形周长平均分割 ...

  10. apache与nginx日志文件的区别(转载)

    apache与nginx日志文件的区别 转载:http://www.xfcodes.com/apache/log/3270.htm 导读:apache与nginx日志文件的区别,在apache与ngi ...