HDU4828 Grids 2014百度之星预赛问题解决
看看Catalan数的公式:为 Catalan(n) = C(2n, n) / n+1 = C(2n, n) - C(2n, n-1); (公式0)
然后利用全排序表达:Catalan(n) = (2n)! / (n+1) * (n)!*n!;
那么Catalan(n-1) = (2(n-1))! / n * (n-1)!(n-1)!;
然后两者相除就得到:Catalan(n) = (4*n-2) / (n+1)
(公式1)//这个就是递归的终极公式了。
一般使用动态规划的递推公式是:Catalan(n) = Catalan(0) * Catalan(n-1) + Catalan(1) * Catalan(n-2) + ... + Catalan(n-1) * Catalan(0);(公式2)
公式1自然比公式2快上一个档次了。
曾经仅仅会用公式2,使用动态规划或者公式0去做,速度自然慢了。
这就这道题目的要诀了。羞愧啊,当时竟然没做出来,由于当时数学水平没跟上。经过一个多月的学习数学,參考了一下网上的程序。最终开窍了。
只是安慰下自己,就是当时做出来的人好像才200人多一点,并且资格赛四道题也只是200人多点做出来的,恰好我做完了。
算法高手究竟有多少呢?不少,也不多。-- 废话。
呵呵。给大家一个衡量的大概尺度。能够把这道题做出来的人应该能够说是高手了,起码数学这块过关了。
记得一个好像是什么外国语学院的。竟然几分钟做出来了。还是外国语学院的,难倒是英语高手+算法高手,厉害。
当然我也是英语高手,呵呵。
扯远了,最后是所谓乘法逆元问题,能够套模板程序了。要知道推导能够參考组合数学书。
就是GCD扩展的算法。扩展之后的系数就是乘法逆元了。
#include <stdio.h> const int N = 1000001;
const long long MOD = (long long)1E9 + 7LL;
long long g; void extGCD(long long a,long long b,long long &x,long long &y)
{
if(b == 0)
{
x = 1, y = 0;
g = a;
return ;
}
extGCD(b, a % b, y, x);
y -= a / b * x;
} long long modReverse(long long a, long long n)
{
long long x, y;
extGCD(a, n, x, y);
return (x + n) % n;
} long long Catalan[N]; //0 1 2 3 4 5 6 7 8 9 10 11 12
void genCatalan() //1 1 2 5 14 42 132 429 1430 4862 16796 58786 208012
{
Catalan[0] = Catalan[1] = 1LL;
for (int i = 2; i < N; i++)
{
long long tmp = modReverse(i+1LL, MOD);
Catalan[i] = Catalan[i - 1] * ((i<<2) - 2) % MOD * tmp % MOD;
}
} int main()
{
genCatalan();
int T, num;
scanf("%d", &T);
for (int t = 1; t <= T; t++)
{
scanf("%d", &num);
printf("Case #%d:\n%I64d\n", t, Catalan[num]);
}
return 0;
}
版权声明:笔者靖心脏,景空间地址:http://blog.csdn.net/kenden23/,只有经过作者同意转载。
HDU4828 Grids 2014百度之星预赛问题解决的更多相关文章
- 2014百度之星预赛(第二场)——Best Financing
2014百度之星预赛(第二场)--Best Financing Problem Description 小A想通过合理投资银行理財产品达到收益最大化.已知小A在未来一段时间中的收入情况,描写叙述为两个 ...
- 2014百度之星资格赛——Disk Schedule
2014百度拥有明星格比赛--Disk Schedule Problem Description 有非常多从磁盘读取数据的需求,包含顺序读取.随机读取. 为了提高效率.须要人为安排磁盘读取. 然而.在 ...
- 2014百度之星初赛第二场hdu 4831 Scenic Popularity
Scenic Popularity Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others ...
- 2014 百度之星 题解 1004 Labyrinth
Problem Description 度度熊是一仅仅喜欢探险的熊,一次偶然落进了一个m*n矩阵的迷宫,该迷宫仅仅能从矩阵左上角第一个方格開始走,仅仅有走到右上角的第一个格子才算走出迷宫,每一次仅仅能 ...
- 2014百度之星资格赛 1004:Labyrinth(DP)
Labyrinth Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total S ...
- 2014百度之星资格赛 1001:Energy Conversion(水题,逻辑题)
Energy Conversion Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others ...
- 2014 百度之星题解 1002 - Disk Schedule
Problem Description 有非常多从磁盘读取数据的需求,包含顺序读取.随机读取.为了提高效率,须要人为安排磁盘读取.然而,在现实中,这样的做法非常复杂.我们考虑一个相对简单的场景. 磁盘 ...
- 2014百度之星第四题Labyrinth(DP)
Labyrinth Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...
- 2014百度之星第三题Xor Sum(字典树+异或运算)
Xor Sum Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 132768/132768 K (Java/Others) Total ...
随机推荐
- Android AlarmManager报警的实现
什么是AlarmManager? AlarmManager它是Android经常使用的系统-Level提醒服务,我们指定为广播中的特定时间Intent. 我们设定一个时间,然后在该时间到来时.Alar ...
- Windows Azure应用系列:微软的云部署VPN
本文介绍如何使用OpenVPN微软云计算server既定VPN维修. 过程,如下面: 1.新建Linux或者Ubuntu虚拟机.并设置port.(本文将建立Ubuntu作为演示) 2.利用PuTTY登 ...
- 认识mongoDB数据库
mongodb中有三元素:数据库,集合,文档,其中“集合”对应关系型数据库中的“表”,“文档”对应“行”. 安装mongoDB: 去官网下载对应系统的mongoDB压缩包,解压后将文件夹重命名为mon ...
- c++日历改进版
#include<iostream> # include<fstream> #include<time.h> #include<string> #inc ...
- java 加载dll介绍(转)
最近在做的工作要用到本地方法,需要在Java中加载不少动态链接库(以下为方便延用Windows平台下的简写dll,但并不局限于Windows).刚刚把程序跑通,赶紧把一些心得写出来,mark.也希望对 ...
- jQuery
代码的层定位滑动动画效果
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- WP8.1开发者预览版本号已知 Bug
偶的 Lumia 920 已经升级到最新的 8.1 开发者预览版本号,使用中没有发现什么问题. 可能是由于偶玩手机的情况比較少吧!忽然看到 MS 停止此版本号的更新,并说明有非常多的 BUG,偶就郁闷 ...
- unix pwd使用命令
[语法]: pwd [说明]: 此命令会显示当前的工作文件夹 []: pwd 这显示当前工作文件夹 版权声明:本文博主原创文章.博客,未经同意不得转载.
- 默认情况下安装的应用程序C盘后提示权限不足,当你开始介意。。。
最近,不少用户抱怨的经销商.正在使用win 7我们的计算机系统上安装软件后,提示权限不够开放系统,无法启动软件. 在xp该系统是没有问题的.原因是,我们会选择在默认安装路径系统C-disk.和win ...
- 简单vector达到
得知c++于,看完这本书后,,最近苦于不知道下一步该怎么做了,在寻找STL在各种容器的源代码分析,我想一次又一次地实现它. 之前,很多问题看的时候不知道是怎么回事,意与理解的.这个vector类写得特 ...