牛客小白月赛1 I.あなたの蛙が帰っています

题目链接

题目描述

あなたの蛙が帰っています!


蛙蛙完成了一趟旅行,回家啦!但它还是没有去它心中非常想去的几个地方。总共有 N 个它 想去的目的地。蛙蛙下定了决心,它要做一个愿望清单,一定要让自己去那些想去的地方。蛙蛙 是这样做的:它会不定时地想起一个或多个目的地,然后按顺序写在愿望清单上。但是每次蛙蛙 出去旅行时,都会先去最近写在愿望清单上的地方,并且蛙蛙不会重复去一个目的地,但它会去 访问所有的目的地。蛙蛙有个最想去的地方,这个地方是它第一个想到的,但由于种种原因,这 个地方不能是第一个被蛙蛙访问的。蛙蛙脑中回想目的地的顺序是固定的,所以它想请问你,它最终访问这些目的地的顺序有多少种?
对于两种访问序列 A 和 B ,它们是不同的当且仅当存在至少一个 i ,使得 A i ≠ B i A_i \not= B_i Ai​​=Bi​。
为了让大家不被卡题意,这里给出一句话题意:
已知一个没有深度限制的栈的入栈序列为 A 1 , A 2 , A 3 , ⋯ , A N A_1, A_2, A_3, \cdots, A_N A1​,A2​,A3​,⋯,AN​ ,且 A 1 A_1 A1​ 不能第一个出栈。求合法的出栈序列个数。答案对 998244353 取模。

输入描述:

第一行一个数 T ,表示蛙蛙有 T 组询问。
接下去 TT 行,每行一个正整数 N, 表示目的地的个数(入栈元素个数)。

输出描述:

输出共 T 行,每行一个答案,格式形如 ,具体可见样例。
答案可能较大,请对 998244353 取模后输出。

示例1

输入

3
3
9
24

输出

Case #1: 3
Case #2: 3432
Case #3: 508887030

对长为 n n n 的合法出栈序列数称为卡特兰数,有一个经典的公式:
a n s [ n ] = 1 n + 1 C 2 n n ans[n]=\frac{1}{n+1}C_{2n}^n ans[n]=n+11​C2nn​
题目限定第一个元素不能第一个出栈,我们换种思路,如果第一个元素第一个出栈,就是求剩下 n − 1 n-1 n−1 个元素的合法出栈序列数,即答案为:
a n s [ n ] − a n s [ n − 1 ] ans[n]-ans[n-1] ans[n]−ans[n−1]
因为 n n n 不大,可以直接预处理出 2 e 5 2e5 2e5 内的组合数,也可以直接套卢卡斯定理的模板,我用的前者,AC代码如下:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll mod=998244353;
const int N=2e5+5;
ll F[N+1],I[N+1],n;
ll power(ll a,ll b){return b?power(a*a%mod,b/2)*(b%2?a:1)%mod:1;}
void init(){F[0]=1;for(ll i=1;i<=N;i++) F[i]=F[i-1]*i%mod;I[N]=power(F[N],mod-2);for(ll i=N;i--;){I[i]=I[i+1]*(i+1)%mod;}
}ll C(ll n,ll k){return F[n]*I[n-k]%mod*I[k]%mod;
}int main()
{init();int t;scanf("%d",&t);for(int i=1;i<=t;i++){scanf("%lld",&n);printf("Case #%d: %lld\n",i,(C(2*n,n)*power(n+1,mod-2)%mod-C(2*(n-1),n-1)*power(n,mod-2)%mod+mod)%mod);}return 0;
}

牛客小白月赛1 I.あなたの蛙が帰っています相关推荐

  1. 牛客小白月赛1 I あなたの蛙が帰っています 【卡特兰数】

    链接:https://www.nowcoder.com/acm/contest/85/I 题目描述 あなたの蛙が帰っています!  蛙蛙完成了一趟旅行,回家啦!但它还是没有去它心中非常想去的几个地方.总 ...

  2. 牛客小白月赛1 G .あなたの蛙は旅⽴っています

    牛客小白月赛1 G .あなたの蛙は旅⽴っています 题目链接 题目描述 あなたの蛙は旅立っています! 你的蛙正在考虑它应该按怎样的路线去旅行.这些景点可以抽象为 N N N 个镶嵌着的六边形.每个景点 ...

  3. 牛客小白月赛16 小石的签到题(博弈)

    牛客小白月赛16 小石的签到题 链接:https://ac.nowcoder.com/acm/contest/949/A来源:牛客网 题目描述 输入描述: 共一行,输入一个数 nnn . 输出描述: ...

  4. F.孤独(牛客小白月赛39)

    F.孤独(牛客小白月赛39) 题意: 给定一棵树,寻找一个路径,将断掉所有与这个路径上的点相连的边,使得剩下的最大连通块的大小最小 题解: 这题有点印象,感觉做过,至少这个方法肯定遇到过 设dp[u] ...

  5. 牛客小白月赛58 B(暴力)C(思维)D(dp滚动数组优化)

    牛客小白月赛58 感觉没什么意思,这场月赛出题人有点问题. B 题意:给定一定的数据填充顺序和每一个填充层的名称,只有填充满了上一层才可以填充下一层. 但是每一层又属于某一个大层,一个大层中包含了若干 ...

  6. 牛客小白月赛65个人题解A-E

    1. 牛客小白月赛65 A. 牛牛去购物 题意:给定n元,购买价格为a元的篮球和价格为b的篮球,数量不定,要使得花掉的钱最多,也就是剩余的钱数最少,求这个值 (1 <= n, a, b < ...

  7. 牛客小白月赛24 J.建设道路

    牛客小白月赛24 J.建设道路 题目链接 题目描述 牛牛国有 nnn 个城市,编号为 1-n,第 iii 个城市有一个价值 aia_iai​ ,牛国的国王牛阔落特别喜欢在牛牛国旅游,并且他不想每次旅游 ...

  8. 牛客小白月赛4 D.郊区春游

    牛客小白月赛4 D.郊区春游 题目链接 题目描述 今天春天铁子的班上组织了一场春游,在铁子的城市里有 nnn 个郊区和 mmm 条无向道路,第 iii 条道路连接郊区 AiA_iAi​ 和 BiB_i ...

  9. 牛客小白月赛25 C.白魔法师

    牛客小白月赛25 C.白魔法师 题目链接 题目描述 你是一个白魔法师. 现在你拿到了一棵树,树上有 个点,每个点被染成了黑色或白色. 你可以释放一次魔法,将某个点染成白色.(该点不一定是黑色点,也可以 ...

最新文章

  1. Android.mk文件语法规范
  2. 所有类是object的子类,但是又可以继承一个其他类解析
  3. 腾讯To B业务架构再升级,汤道生任云与智慧产业事业群CEO
  4. 代理详解 静态代理+JDK/CGLIB 动态代理实战
  5. zuul filter
  6. 架构师之路 — API 经济 — Swagger OpenAPI Specification
  7. golang 接口类型 interface 简介
  8. c++一元稀疏多项式计算器_武忠祥真题班归纳(更新至一元函数积分未完)
  9. VTK:Shaders之MarbleShader
  10. java streamhandler_java中的Lamdba表达式和Stream
  11. python基础课程_2学习笔记3:图形用户界面
  12. Java static 静态代码块、代码块
  13. java持久层用文件_Java持久层框架MyBatis简单实例
  14. ie 无人操作自动关闭_win7的IE自动关闭如何解决?
  15. python处理json文件_python读取json文件转成excel
  16. python网课哪个好-python网课学习笔记--4
  17. 手把手图文教你从Eclipse项目迁移Android Studio
  18. 安装系统显示sql服务器未安装,win7系统安装SQLServer2005提示“SQL Server服务无法启动”的解决方法...
  19. 字符串转json(JSON.parse报错)
  20. java程序员面试自我介绍范文

热门文章

  1. mdk5实时调参_使用RealView MDK进行SW调试和实时跟踪STM32
  2. Linux系统开发: 搭建NFS服务器实现文件共享
  3. 常见的玻璃LED透明屏型号及选择需知
  4. AI引领技术变革,自动化云平台所带来的测试工程师进阶危机~
  5. async await 和 Promis 用法
  6. 逻辑回归损失函数为什么引入log?
  7. BZOJ 2725 [Violet 6]故乡的梦
  8. 学习QT之QTime类
  9. 两种方法实现 返回上一页 按钮功能
  10. C#中Using的三种使用方法