洛谷 P1044 [NOIP2003 普及组] 栈 题解

Sol

本题通过分析可得:

假设现在进行 \(12\) 次操作,我们把 push 认为是在地图上向右走,pop 向上走,那么其中一个合法的步骤可以是(\(p1\) 代表 push,\(p2\) 代表 pop):\(p1, p1, p2, p1, p2, p2, p1, p1, p2, p2, p1, p2\)。

而且我们发现,他最终会走到 \((n, n)\) 的位置,且如果这个序列是一个合法序列(pushpop 串的任意前缀 \(\text{push}\) 的个数 \(\ge\) \(\text{pop}\) 的个数)它能在走的过程中保证会在 \((0, 0)\),\((n, n)\),\((n, 0)\) 这三个点围成的三角形内走动。

我们可以推出结果就是能走到 \((n, n)\) 的总数 \(-\) 非法个数,也就是 \(C^n_{2n} \times C^{n - 1}_{2n}\)。

\(C^{n}_{2n}\) 表示走 \(2n\) 步然后走到点 \((n, n)\),共选取了 \(n\) 步往右走。

\(C^{n - 1}_{2n}\) 表示走 \(2n\) 步然后走到点 \((n - 1, n + 1)\),共选取了 \(n - 1\) 步往右走。

接下来就可以化简了。

\(C^{n}_{2n} - C^{n - 1}_{2n}\)

\(= \dfrac{(2n)!}{(n!)^{2}} - \dfrac{(2n)!}{(n-1)!\ (n+1)!}\)

\(= \dfrac{(2n)!\ (n+1)-n(2n)}{(n+1)!\ n!}\)

\(= \dfrac{1}{n+1} \times \dfrac{(2n)!}{(n!)^{2}}\)

\(= \dfrac{C^{n}_{2n}}{n+1}\)

我们还可以推出:

\(C^{m}_{n} = C^{m-1}_{n-1} + C^{m}_{n-1}\)

那么代码就一呼而出了。

Code

#include <iostream>
#include <algorithm>
#include <cmath>
#include <cstring>
#include <stack> using namespace std; using ll = long long; const int kMaxN = 110, kInf = (((1 << 30) - 1) << 1) + 1;
const ll kLInf = 9.22e18; int n, f[kMaxN]; int main() {
ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
cin >> n;
f[0] = 1, f[1] = 1;
for (int i = 2; i <= n; ++ i) {
for (int j = 0; j < i; ++ j) {
f[i] += f[j] * f[i - j - 1];
}
}
cout << f[n] << '\n';
return 0;
}

洛谷 P1044 [NOIP2003 普及组] 栈 题解的更多相关文章

  1. 洛谷 P1045 & [NOIP2003普及组] 麦森数

    题目链接 https://www.luogu.org/problemnew/show/P1045 题目大意 本题目的主要意思就是给定一个p,求2p-1的位数和后500位数. 解题思路 首先看一下数据范 ...

  2. 动态规划 洛谷P1048 [NOIP2005 普及组] 采药

    洛谷P1048 [NOIP2005 普及组] 采药 洛谷的一个谱架-的题目,考的是01背包问题,接下来分享一下我的题解代码. AC通过图: 我的代码: 1 //动态规划 洛谷P1048 [NOIP20 ...

  3. 求最长子序列(非连续)的STL方法 - 洛谷P1020 [NOIP1999 普及组] 导弹拦截

    先给出例题:P1020 [NOIP1999 普及组] 导弹拦截 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 大佬题解:P1020 [NOIP1999 普及组] 导弹拦截 - 洛谷 ...

  4. 洛谷P1077 [NOIP2012普及组]摆花 [2017年四月计划 动态规划14]

    P1077 摆花 题目描述 小明的花店新开张,为了吸引顾客,他想在花店的门口摆上一排花,共m盆.通过调查顾客的喜好,小明列出了顾客最喜欢的n种花,从1到n标号.为了在门口展出更多种花,规定第i种花不能 ...

  5. 洛谷——P1980 [NOIP2013 普及组] 计数问题

    题目描述 试计算在区间 11 到 nn的所有整数中,数字x(0 ≤ x ≤ 9)x(0≤x≤9)共出现了多少次?例如,在 11到1111中,即在 1,2,3,4,5,6,7,8,9,10,111,2, ...

  6. 洛谷 1067 NOIP2009 普及组 多项式输出

    [题解] 一道简单的模拟题.需要判一些特殊情况:第一项的正号不用输出,x的一次项不用输出指数,系数为0的项不用输出等等,稍微细心一下就好. #include<cstdio> #includ ...

  7. [洛谷P1095]NOIP2007 普及组T3 守望者的逃离

    问题描述 恶魔猎手尤迪安野心勃勃,他背叛了暗夜精灵,率领深藏在海底的娜迦族企图叛变.守望者在与尤迪安的交锋中遭遇了围杀,被困在一个荒芜的大岛上.为了杀死守望者,尤迪安开始对这个荒岛施咒,这座岛很快就会 ...

  8. [洛谷P1062/NOIP2006普及组] 数列

    首先题面是这样的: 给定一个正整数 k(3≤k≤15) ,把所有k的方幂及所有有限个互不相等的k的方幂之和构成一个递增的序列,例如,当 k=3 时,这个序列是: 1,3,4,9,10,12,13,- ...

  9. 洛谷 P1020 [NOIP1999 普及组] 导弹拦截

    Coidng #include <iostream> #include <algorithm> #include <cstring> #include <ve ...

  10. 洛谷P1049 [NOIP2001 普及组] 装箱问题

    本题就是一个简单的01背包问题   1.因为每个物品只能选一次,而且要使箱子的剩余空间为最小.所以可以确定属性为 MAX 2.由于是从n个物品里面选i个物品 那么就是选出的i个物品的空间总和要尽可能的 ...

随机推荐

  1. 说说 Java 的执行流程?

    Java 的执行流程 Java 的执行流程包括多个阶段,从源码编写到最终程序的执行,涉及到编译.类加载.字节码执行.垃圾回收等多个环节.下面将详细介绍 Java 程序的执行流程. 1. 编写源代码 开 ...

  2. PHP连MYSQL查询结果中文乱码的完美解决方法

    问题背景:近日接手同事的一个项目(wampserver环境),配置好环境,导库完毕,打开页面一看中文全是问号.打开network看了下请求,请求结果里的中文也一样乱码了.懵逼... 解决方法:打开My ...

  3. EFCore-CodeFirst-Mysql 创建ConsoleApplication 程序

    1.创建一个ConsoleApplication,程序集选择.NET5.:添加对应的依赖 2.添加对应的类Student.Course.Classes using System; using Syst ...

  4. 银河麒麟系统 jenkins docker 部署 自动化打包部署git 项目

    Jenkins 是一个开源的自动化服务器,主要用于实现 持续集成(CI) 和 持续交付/部署(CD),其核心作用在于通过自动化流程提升软件开发和交付的效率与质量 一.环境准备 1. 安装 Docker ...

  5. DevEco Studio AI辅助开发工具两大升级功能 鸿蒙应用开发效率再提升

    随着搭载HarmonyOS 5的Pura X发布,鸿蒙生态进入快车道,各应用正在加速适配开发,越来越多开发者加入到鸿蒙应用开发浪潮中.为提升鸿蒙应用开发效率,华为前不久上线了首款开发HarmonyOS ...

  6. 【HUST】网安|计算机网络|计算机网络自顶向下方法(原书第7版)第三章部分习题答案

    参考:英文版的原答案. 答案放gitee了,自取. 3-P18. 3.4.4 节我们学习的一般性 SR 协议中,只要报文可用(如果报文在窗口中) ,发送方就会不等待确认而传输报文.假设现在我们要求一个 ...

  7. Selenium中解决输入法导致sendKeys输入内容与预期不一致的问题

    有时候由于系统输入法处于中文状态或英文状态输入内容与预期不一致的问题,我们采用文本内容拷贝的方式传递给相关元素,从而解决该问题,具体代码如下: /*** * 通过拷贝的方式输入文字内容,防止输入法中英 ...

  8. 使用win10 wsl子系统将 rust 程序静态编译为linux可执行文件

    chapter Ⅰ 事情起因 最近在学习rust, 想把一部分java服务迁移至rust编写,但由于公司服务器都是linux系统,所以在找windows下交叉编译为linux可执行文件的方法,把bin ...

  9. c++并发编程实战-第3章 在线程间共享数据

    线程间共享数据的问题 多线程之间共享数据,最大的问题便是数据竞争导致的异常问题.多个线程操作同一块资源,如果不做任何限制,那么一定会发生错误.例如: 1 int g_nResource = 0; 2 ...

  10. vivo官网APP首页端智能业务实践

    作者:vivo 互联网客户端团队- Li Quanlong 本文介绍端智能技术在vivo官网APP的落地实践,通过抽象问题.提出端智能解决方案.方案落地这三大块内容逐步递进地展开端智能技术的应用过程. ...