洛谷 P1044 [NOIP2003 普及组] 栈 题解
洛谷 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 普及组] 栈 题解的更多相关文章
- 洛谷 P1045 & [NOIP2003普及组] 麦森数
题目链接 https://www.luogu.org/problemnew/show/P1045 题目大意 本题目的主要意思就是给定一个p,求2p-1的位数和后500位数. 解题思路 首先看一下数据范 ...
- 动态规划 洛谷P1048 [NOIP2005 普及组] 采药
洛谷P1048 [NOIP2005 普及组] 采药 洛谷的一个谱架-的题目,考的是01背包问题,接下来分享一下我的题解代码. AC通过图: 我的代码: 1 //动态规划 洛谷P1048 [NOIP20 ...
- 求最长子序列(非连续)的STL方法 - 洛谷P1020 [NOIP1999 普及组] 导弹拦截
先给出例题:P1020 [NOIP1999 普及组] 导弹拦截 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 大佬题解:P1020 [NOIP1999 普及组] 导弹拦截 - 洛谷 ...
- 洛谷P1077 [NOIP2012普及组]摆花 [2017年四月计划 动态规划14]
P1077 摆花 题目描述 小明的花店新开张,为了吸引顾客,他想在花店的门口摆上一排花,共m盆.通过调查顾客的喜好,小明列出了顾客最喜欢的n种花,从1到n标号.为了在门口展出更多种花,规定第i种花不能 ...
- 洛谷——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, ...
- 洛谷 1067 NOIP2009 普及组 多项式输出
[题解] 一道简单的模拟题.需要判一些特殊情况:第一项的正号不用输出,x的一次项不用输出指数,系数为0的项不用输出等等,稍微细心一下就好. #include<cstdio> #includ ...
- [洛谷P1095]NOIP2007 普及组T3 守望者的逃离
问题描述 恶魔猎手尤迪安野心勃勃,他背叛了暗夜精灵,率领深藏在海底的娜迦族企图叛变.守望者在与尤迪安的交锋中遭遇了围杀,被困在一个荒芜的大岛上.为了杀死守望者,尤迪安开始对这个荒岛施咒,这座岛很快就会 ...
- [洛谷P1062/NOIP2006普及组] 数列
首先题面是这样的: 给定一个正整数 k(3≤k≤15) ,把所有k的方幂及所有有限个互不相等的k的方幂之和构成一个递增的序列,例如,当 k=3 时,这个序列是: 1,3,4,9,10,12,13,- ...
- 洛谷 P1020 [NOIP1999 普及组] 导弹拦截
Coidng #include <iostream> #include <algorithm> #include <cstring> #include <ve ...
- 洛谷P1049 [NOIP2001 普及组] 装箱问题
本题就是一个简单的01背包问题 1.因为每个物品只能选一次,而且要使箱子的剩余空间为最小.所以可以确定属性为 MAX 2.由于是从n个物品里面选i个物品 那么就是选出的i个物品的空间总和要尽可能的 ...
随机推荐
- 极客时间上新 .NET + AI 体系课
课程特色 1️⃣ 全网首个.NET+AI体系化课程(没有之一!) 2️⃣ Semantic Kernel + Kernel Memory 核心知识全覆盖 3️⃣ 每课时基于Polyglot Noteb ...
- Mybatis 框架课程第一天
目录 1 框架概述 1.1 MyBatis 框架概述 1.2 JDBC 编程的分析 1.2.1 jdbc 程序的回顾 1.2.2 jdbc问题分析 2 Mybatis框架快速入门 2.1 Mybati ...
- 决策单调性DP
决策单调性DP是一个非常重要的DP类别.在决策点随枚举点增加单调不降时,可以有效地优化复杂度. 一般而言,决策点指的是对于一个 \(f[i]\),它的值需要从另一个值j中转移,而对于所有j,令 \(f ...
- Pandas 实现 Excel 多列 转 多行
也是最近的一个需求, 将一个 Excel 表, 多列转多行, 就把那种行的, 业务人员经常搞的那种垃圾表,给它转为咱熟悉的数据库表的形式, 多列转多行. 还要帮他们处理数据, 恶心得一批, 其实也不一 ...
- 网络编程:reactor反应堆_TCP字节流处理和HTTP协议实现
buffer对象 buffer对象:顾名思义,就是一个缓冲区对象,缓存了从套接字接收来的数据以及需要发往套接字的数据. 如果是从套接字接受来的数据,事件处理回调函数在不断地往buffer对象增加数据, ...
- Docker不装C盘
Docker默认安装在C盘,这未来随着docker使用必定会导致C盘空间吃紧.所以本文提前进行空间布局,将docker默认安装路径软链接到D盘.软链接D盘Docker默认安装路径为C:\Program ...
- C# HttpListener 和 HttpServer区别
HttpListener 和 HttpServer 都是 C# 中用于创建 HTTP 服务器的类库,它们的作用都是监听 HTTP 请求,并向客户端发送 HTTP 响应.它们的主要区别在于实现方式和使用 ...
- 装在U盘或移动固态硬盘里的系统——适用于Ventoy和VirtualBox的Win to go 和 Linux to go 系统制作教程
写在前面 前段时间, 突然想起了大学期间折腾过的双系统, 又恰逢最近学习工作需要用到Linux系统环境, 用虚拟机又感觉性能跟不上, 因此萌生了一个用移动固态硬盘安装双系统的想法. 照着网络上各位老师 ...
- Hexo博客Next主题更换cdn加速访问
有时候访问我的博客时,总是会出现cdn.jsdelivr.net无法访问或者访问速度过慢的情况.我的博客园使用的是BNDong/Cnblogs-Theme-SimpleMemory主题,也遇到的这样的 ...
- Hyperledger Fabric出块配置详解
Hyperledger Fabric的出块主要是Orderer节点负责,出块配置位于创世区块中,支持定时出块.达到一定交易数出块两种条件.出块配置位于configtx.yaml中,修改出块配置后需要重 ...