https://www.luogu.org/problemnew/show/P1044

由于是用标签搜索进来的,所以这道题一定是有dp的解法。

很显然规定每次加入元素之前可以从栈中清理出任意数量的元素。每一个元素都会贡献一种不同的排法。

试一下。进栈的顺序是1,2,3,...,n,那么可以设计dp[i]表示i为栈顶的方法数?这样没办法表示栈中元素的数量。

设计dp[i][j]表示i为栈顶,元素个数为j个的方法数,这样就记录了所有的信息。dp[0][0]表示空栈。

转移的话就很好想,每次向栈中加入新的元素i,那么dp[i][j]=sum(dp[0~i-1][j-1~n]),复杂度有点高,4次方呢。不过n取18的话就够用了。

但是这样好像得不到正确答案,会重复计数……还是说最后只计算n为栈顶的所有结果?

设计一个dp[i][j][k],考虑前i个元素,以j为栈顶,k个元素的栈的方法,就变成了n的6次方……

还是看题解了,题解说这个是卡特兰数……好吧组合数学没学好……


设计dp[i]表示,第i个数的选法。

dp[0]=1,dp[1]=1

最新文章

  1. SQL Server数据库性能优化技巧
  2. php 正则匹配中文(转)
  3. 推荐!国外程序员整理的 PHP 资源大全
  4. c#之习题
  5. IOS 多线程编程之Grand Central Dispatch(GCD)介绍和使用 多线程基础和练习
  6. 导出项目为jar包
  7. linux下实现自己的shell解释器
  8. 【Chromium中文文档】线程
  9. POJ 3311 Hie with the Pie (BFS+最短路+状态压缩)
  10. [ios2]发布时去除NSLog打印
  11. YII框架视图模块化
  12. bootstrap: 内联表单;
  13. ifconfig和ping
  14. python将字符串转换成整型
  15. hdu 5776 抽屉定理
  16. 2019.02.16 bzoj5466: [Noip2018]保卫王国(链分治+ddp)
  17. node中中间件body-parser的实现方式
  18. python文档生成工具:pydoc、sphinx;django如何使用sphinx?
  19. 如何使用Maven scope
  20. 韩剧TV APP案例分析

热门文章

  1. ubuntu 14.04安装nodejs
  2. 转: memcache, redis, mongodb 对比
  3. NHibernate之旅(7):初探NHibernate中的并发控制
  4. 入手Arduino Yun,配合Blynk搞一波事情
  5. shell mysql 直接创建表
  6. JAVA设计模式之 原型模式【Prototype Pattern】
  7. Struts拦截器(转)
  8. MySQL搭建系列之多实例
  9. 用python编写的定向arp欺骗工具
  10. openwrt gstreamer实例学习笔记(七. gstreamer 缓冲区(Buffers)和事件(Events))