当前位置: 首页 > news >正文

HDU 4828 (卡特兰数+逆)

HDU 4828 Grids

思路:能够转化为卡特兰数,先把前n个人标为0。后n个人标为1。然后去全排列,全排列的数列。假设每一个1的前面相应的0大于等于1,那么就是满足的序列,假设把0看成入栈,1看成出栈。那么就等价于n个元素入栈出栈,求符合条件的出栈序列,这个就是卡特兰数了。

然后去递推一下解,过程中须要求逆元去计算
代码:

#include <stdio.h>
#include <string.h>

const int N = 1000005;
const long long MOD = 1000000007;

long long extend_gcd(long long a,long long b,long long &x,long long &y)
{
    if(a == 0 && b == 0) return -1;
    if(b == 0){x = 1; y = 0; return a;}
    long long d = extend_gcd(b, a % b, y, x);
    y -= a / b * x;
    return d;
}

long long mod_reverse(long long a, long long n)
{
    long long x,y;
    long long d = extend_gcd(a, n, x, y);
    if(d == 1) return (x % n + n) % n;
    else return -1;
}

int t, n;
long long Catalan[N];


int main() {
    Catalan[1] = Catalan[2] = 1;
    for (int i = 3; i < N; i++) {
    long long tmp = mod_reverse((long long) i, MOD);
    Catalan[i] = Catalan[i - 1] * (4 * i - 6) % MOD * tmp % MOD;
    }
    int cas = 0;
    scanf("%d", &t);
    while (t--) {
    scanf("%d", &n);
    printf("Case #%d:\n", ++cas);
    printf("%lld\n", Catalan[n + 1]);

    }
    return 0;
}

版权声明:本文博客原创文章,博客,未经同意,不得转载。

相关文章:

  • python学习-文件处理
  • 四、oracle 用户管理二
  • 3.字典常用功能
  • java多线程下载
  • MySQLdb的安装与使用
  • 谋势、聚力、强生态,用友三十而立
  • linux下svn服务器搭建
  • 聊聊sentinel的AuthoritySlot
  • element.style覆盖了我的样式!!
  • 折腾一天终于尝到了 signalr core了
  • IP地址便捷修改器 V3.5 绿色版
  • 解决子级用css float浮动 而父级div没高度不能自适应高度
  • 滴滴公布自查进展:免去黄洁莉顺风车事业部总经理职务
  • 浅谈HTML5单页面架构(一)——requirejs + angular + angular-route
  • DHCP的配置文档
  • CentOS学习笔记 - 12. Nginx搭建Centos7.5远程repo
  • CSS选择器——伪元素选择器之处理父元素高度及外边距溢出
  •  D - 粉碎叛乱F - 其他起义
  • golang 发送GET和POST示例
  • Hexo+码云+git快速搭建免费的静态Blog
  • HomeBrew常规使用教程
  • js正则,这点儿就够用了
  • node和express搭建代理服务器(源码)
  • vue-cli在webpack的配置文件探究
  • 服务器之间,相同帐号,实现免密钥登录
  • 前端代码风格自动化系列(二)之Commitlint
  • 浅谈Kotlin实战篇之自定义View图片圆角简单应用(一)
  • 如何编写一个可升级的智能合约
  • 使用 @font-face
  • 使用SAX解析XML
  • 推荐一款sublime text 3 支持JSX和es201x 代码格式化的插件
  • 一起参Ember.js讨论、问答社区。
  • AI又要和人类“对打”,Deepmind宣布《星战Ⅱ》即将开始 ...
  • 阿里云API、SDK和CLI应用实践方案
  • ​html.parser --- 简单的 HTML 和 XHTML 解析器​
  • ​LeetCode解法汇总1410. HTML 实体解析器
  • #android不同版本废弃api,新api。
  • #Linux杂记--将Python3的源码编译为.so文件方法与Linux环境下的交叉编译方法
  • #Lua:Lua调用C++生成的DLL库
  • (13)Hive调优——动态分区导致的小文件问题
  • (14)学习笔记:动手深度学习(Pytorch神经网络基础)
  • (6)添加vue-cookie
  • (C语言版)链表(三)——实现双向链表创建、删除、插入、释放内存等简单操作...
  • (html5)在移动端input输入搜索项后 输入法下面为什么不想百度那样出现前往? 而我的出现的是换行...
  • (附源码)ssm基于jsp高校选课系统 毕业设计 291627
  • (三)docker:Dockerfile构建容器运行jar包
  • (五)大数据实战——使用模板虚拟机实现hadoop集群虚拟机克隆及网络相关配置
  • (一)Thymeleaf用法——Thymeleaf简介
  • (转)LINQ之路
  • (最完美)小米手机6X的Usb调试模式在哪里打开的流程
  • .bat批处理(七):PC端从手机内复制文件到本地
  • .bat批处理(一):@echo off
  • .net 流——流的类型体系简单介绍
  • .NET 使用 ILMerge 合并多个程序集,避免引入额外的依赖
  • .NET(C#) Internals: as a developer, .net framework in my eyes