题目链接:uva 11290 - Gangs

题目大意:给出n和k,表示要构造一个长度为2*n-2的字符串,OG序列为k的字符串(类似于出栈入栈)。

  • 如果字符s2先回到原点(即栈空),那么s2 OG s1
  • 如果s1和s2同事回答原点,那么忽略头尾的ES进行比较
  • 如果s1和s2的前t个相同,扣掉前t个字符考虑

解题思路:出栈入栈的个数是卡特兰数,每次考虑两个部分
Sstr1Estr2.

#include <cstdio>
#include <cstring>
#include <algorithm>using namespace std;
const int maxn = 20;int f[maxn], sf[maxn][maxn];void init () {f[0] = 1;for (int i = 1; i < maxn; i++) {sf[i][0] = f[i-1] * f[0];for (int j = 1; j < i; j++)sf[i][j] = sf[i][j-1] + f[i-j-1] * f[j];f[i] = sf[i][i-1];}/*for (int i = 0; i < maxn; i++)printf("%d\n", f[i]);*/
}char* solve (char* s, int n, int m) {if (n == 0)return s;if (n == 1) {*s++ = 'E';*s++ = 'S';return s;}int k = upper_bound(sf[n], sf[n]+n, m) - sf[n];if (k)m -= sf[n][k-1];int q = m / f[k], r = m % f[k];*s++ = 'E';s = solve(s, n - k - 1, q);*s++ = 'S';s = solve(s, k, r);return s;
}int main () {init();int n, m;while (scanf("%d%d", &n, &m) == 2 && n + m) {n--;m--;if (m >=  f[n])printf("ERROR\n");else {char s[maxn*2];*solve(s, n, m) = '\0';printf("%s\n", s);}}return 0;
}

uva 11290 - Gangs(卡特兰数)相关推荐

  1. Catalan数——卡特兰数

    今天阿里淘宝笔试中碰到两道组合数学题,感觉非常亲切,但是笔试中失踪推导不出来 后来查了下,原来是Catalan数.悲剧啊,现在整理一下 Catalan数--卡特兰数] 一.Catalan数的定义令h( ...

  2. 【COGS】2287:[HZOI 2015]疯狂的机器人 FFT+卡特兰数+排列组合

    [题意][COGS 2287][HZOI 2015]疯狂的机器人 [算法]FFT+卡特兰数+排列组合 [题解]先考虑一维的情况,支持+1和-1,前缀和不能为负数,就是卡特兰数的形式. 设C(n)表示第 ...

  3. 关于卡特兰数及典型例题

    关于卡特兰数: f[0] = 1, f[1] = 1; for(int i = 2; i <= n; i++)for(int j = 0; j < i; j++)f[i] += f[j] ...

  4. hdu1032 Train Problem II (卡特兰数)

    题意: 给你一个数n,表示有n辆火车,编号从1到n,入站,问你有多少种出站的可能.    (题于文末) 知识点: ps:百度百科的卡特兰数讲的不错,注意看其参考的博客. 卡特兰数(Catalan):前 ...

  5. 先序序列为a、b、c、d的不同二叉树的个数是多少(卡特兰数)

    除了逻辑清晰的挨个画出来之外,还有一种方法需要大家牢记! 因为前序序列和中序序列可以唯一地确定一棵二叉树,并且题目已经给出了先序序列,所以我们只需要知道由该先序序列可以确定多少个中序序列即可,确定多少 ...

  6. zcmu-1934(卡特兰数大数取模(逆元))

    1934: ly的二叉树 Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 42  Solved: 9 [Submit][Status][Web Boar ...

  7. 洛谷 P1044 栈 [卡特兰数]

    题目背景 栈是计算机中经典的数据结构,简单的说,栈就是限制在一端进行插入删除操作的线性表. 栈有两种最重要的操作,即 poppop (从栈顶弹出一个元素)和 pushpush (将一个元素进栈). 栈 ...

  8. BZOJ4001[TJOI2015]概率论——卡特兰数

    题目描述 输入 输入一个正整数N,代表有根树的结点数 输出 输出这棵树期望的叶子节点数.要求误差小于1e-9 样例输入 1 样例输出 1.000000000 提示 1<=N<=10^9 设 ...

  9. Catalan Numbers 卡特兰数

    卡特兰数源于组合数学,递推式为 H[1] = 1:H[n] = H[n-1]*(4*n-2)/(n+1){n>=2}: 卡塔兰数的渐近增长为 下面给出几个求卡特兰数的公式,用h(n)表示卡特兰数 ...

最新文章

  1. 创业基础(第8章 新企业的创办与管理) 来自高校:全国大学生创新创业实践联盟 分类:创新创业 学习规则:按序学习
  2. 独家 | 人工神经网络中发现了人类大脑拥有的多模态神经元(附链接)
  3. 笔记-中项案例题-2020年下-立项管理
  4. C++ 重载函数调用运算符 | 再探lambda,函数对象,可调用对象
  5. arm-linux-gnueabi和arm-linux-gnueabihf 的区别
  6. win7计算机找不到脚本文件夹,win7系统TXT文件打开提示找不到脚本文件的解决方法...
  7. Python词汇比较运算符
  8. JAVA基础自学笔记整理(一)某些数据类型的姿势
  9. 三大无线技术 —— WiFi、蓝牙、HomeRF(无线网卡、WPAN)
  10. XML注释与取消注释快捷键
  11. envi与arcgis文件转换_ArcGIS ENVI中土地分类格式互转、土地利用转移矩阵、变化图谱计算详解...
  12. Android音视频——H265编码核心技术解析
  13. 试用74LS194加74151设计一个从Q0端输出100111序列信号的序列信号发生器. 要求电路能自启动, 且越简单越好
  14. USB驱动程序(四)——键盘驱动(控制传输)
  15. win10/win1桌面图标锁定,防止桌面图标移动
  16. Fastboot的使用简单教程
  17. 烽火2640路由器命令行手册-11-IP语音配置命令
  18. #pragma DATA_SECTION的使用
  19. 关于医疗AI产品的商业模式的思考
  20. 必读!信息抽取(Information Extraction)【关系抽取】

热门文章

  1. Python+OpenCV实现实时视频3D换脸
  2. C/C++ 点和箭头操作符的区别
  3. Win8各国语言包的安装,让系统变成你想要的语言版,带你体验不一样的输入法
  4. ElasticSearch之 ik分词器详解
  5. 海带不能和什么一起吃 吃海带的好处
  6. android paint 圆角 绘制_android 绘制椭圆 圆角矩形 详细解析
  7. 数字图像处理 第八章 图像压缩
  8. 自媒体怎么同时多平台发文章?5分钟发到30+自媒体平台上
  9. 为什么大人学英语这么难?
  10. 谁说程序员过了35岁之后就要去“送外卖”、“跑滴滴”?这几种发展走向照样解除焦虑