bzoj1485
首先考虑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的更多相关文章
- 【BZOJ1485】[HNOI2009]有趣的数列(组合数学)
[BZOJ1485][HNOI2009]有趣的数列(组合数学) 题面 BZOJ 洛谷 题解 从小往大填数,要么填在最小的奇数位置,要么填在最小的偶数位置. 偶数位置填的数的个数不能超过奇数位置填的数的 ...
- 「BZOJ1485」[HNOI2009] 有趣的数列 (卡特兰数列)
「BZOJ1485」[HNOI2009] 有趣的数列 Description 我们称一个长度为2n的数列是有趣的,当且仅当该数列满足以下三个条件: (1)它是从1到2n共2n个整数的一个排列{ai ...
- [bzoj1485][HNOI2009]有趣的数列_卡特兰数_组合数
有趣的数列 bzoj-1485 HNOI-2009 题目大意:求所有1~2n的排列满足奇数项递增,偶数项递增.相邻奇数项大于偶数项的序列个数%P. 注释:$1\le n\le 10^6$,$1\le ...
- BZOJ1485: [HNOI2009]有趣的数列
Description 我们称一个长度为2n的数列是有趣的,当且仅当该数列满足以下三个条件: (1)它是从1到2n共2n个整数的一个排列{ai}: (2)所有的奇数项满足a1<a3<…&l ...
- bzoj1485:[HNOI2009]有趣的数列
思路:首先限制数很多,逐步来考虑,限制一很容易满足,考虑限制二,也就是让奇数位和偶数位上的数递增,限制三就是让奇数位上的数小于奇数位加一对应的偶数位上的数,那么我们可以把形成序列的过程看成加数的过程, ...
- 【卡特兰数】BZOJ1485: [HNOI2009]有趣的数列
Description 我们称一个长度为2n的数列是有趣的,当且仅当该数列满足以下三个条件: (1)它是从1到2n共2n个整数的一个排列{ai}: (2)所有的奇数项满足a1<a3<…&l ...
- 【BZOJ1485】有趣的数列
Description 我们称一个长度为2n的数列是有趣的,当且仅当该数列满足以下三个条件: (1)它是从1到2n共2n个整数的一个排列{ai}: (2)所有的奇数项满足a1<a3<…&l ...
- bzoj1485: [HNOI2009]有趣的数列(Catalan数)
一眼卡特兰数...写完才发现不对劲,样例怎么输出$0$...原来模数不一定是质数= =... 第一次见到模数不是质数的求组合数方法$(n,m\leq 10^7)$,记录一下... 先对于$1$~$n$ ...
- bzoj1485 有趣的数列
传送门:https://www.lydsy.com/JudgeOnline/problem.php?id=1485 [题解] Catalan数,注意不能直接用逆元,需要分解质因数. # include ...
随机推荐
- [译]servlet3.0与non-blocking服务端推送技术
Non-blocking(NIO)Server Push and Servlet 3 在我的前一篇文章写道如何期待成熟的使用node.js.假定有一个框架,基于该框架,开发者只需要定义协议及相关的ha ...
- CorelDRAW 插件的安装和使用
CorelDRAW 是一款在中国非常受欢迎的图形软件,开放的界面和编程技术,能够对它进行二次开发制作插件,插件大抵有三种gms.cpg.exe格式,下面介绍一下这三种插件的安装和使用方法. 一.gms ...
- 再次学习C++类之构造函数
学习C++类,首先要说C中的结构体,虽然C++类扩展了C中的结构体,可以添加成员函数,但他们是有区别的.在结构体中,成员变量.成员函数都是公有的,而类中,一般是成员变量是私有的,成员函数是公有的,私有 ...
- C中浮点数转字符串
求浮点数转换成字符串,如何才能获得比较正确的字符串.用printf("%f\n", (float)5); 这种方式转换出来的结果是 5.000000 ,末尾都会带6位小数. 控制精 ...
- psutil--跨平台的进程管理
原文地址:http://www.jianshu.com/p/64e265f663f6 Python处理Windows进程 psutil(Python system and process utilit ...
- ASP.NET中POST数据并跳转页面
需求:先Post提交数据,然后跳转到目标页面 找了好久才发现这个神奇的类HttpHelper.原理很简单,利用html的from表单拼接,然后执行 使用方法: NameValueCollection ...
- 软件测试 -- 软件缺陷记录的5C原则
Correct(准确):每个组成部分的描述准确,不会引起误解: Clear(清晰):每个组成部分的描述清晰,易于理解: Concise(简洁):只包含必不可少的信息,不包括任何多余的内容: Compl ...
- UINavigationController 总结
一 . UINavigationBar 1.获取 UINavigationBar 对象: [UINavigationBar appearance] ,可以通过该方法对全部 navigation 进行设 ...
- find 与 tar命令连用
find 与 tar命令连用 今天打包日志时,用 -type f -exec tar -cvf log.tar {} \; 发现只打包了最后一个文件,应该是tar的c参数,每次都创建一个新的文件,想了 ...
- [模拟]ZOJ3485 Identification Number
题意:给了一串15位或18位的身份证号码,求 在改变最少位数的情况下, 输出正确合法的身份证号 合法的身份证 是按照以下规则: 前6位以及“Order code”三位 一定合法 其中X是根据前17位 ...