水の三角(超级卡特兰数/大施罗德数)
题目背景
这个三角图真好看。。
这个是4阶三角图。。
题目描述
现在我们定义一个三角图是像上面一样的图。。
请求出一个N阶三角图从最上方的顶点走到右下方的点的方案数。
有T组询问。
输入输出格式
输入格式:
第一行一个正整数T
第二行T个正整数Ni。
输出格式:
T行,共T个正整数,表示答案模998244353的结果。
输入输出样例
输入样例#1:
3 1 2 3
输出样例#1:
1 2 6
说明
数据范围10^6
思路:只知道每个点等于上面的+右上的+左边的。只会递推,但会超时,然后去oeis找到了这么个东西——大施罗德数(超级卡特兰数)
施罗德数的前几项为1, 2, 6, 22, 90, 394, 1806, 8558, 41586, 206098,...
oeis到的公式
然后会发现这个的第i项等于卡特兰数第i+1项的2倍(除了第1项)(这就是被称为超级卡特兰数的原因吗?)
代码实现使用快速幂+费小马求逆元实现的
代码如下:(该代码取自网上,个人留作模板使用,来源地址:https://blog.csdn.net/LJD201724114126/article/details/81661838)
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
const int maxn=3e6;
typedef long long LL;
#define mod 998244353
LL num[maxn];
LL inverse(LL x,LL y)///快速幂加费马小定理求逆元
{LL sum=1;while(y){if(y&1) sum=sum*x%mod;y/=2;x=x*x%mod;}return sum%mod;
}
int main()
{int n,t;num[1]=num[0]=1;for(int i=2;i<=maxn;i++){num[i]=((6*i-3)*num[i-1]%mod-(i-2)*num[i-2]%mod+mod)%mod*inverse(i+1,mod-2)%mod;}scanf("%d",&t);while(t--){scanf("%d",&n);if(n==1) {printf("1\n");continue;}printf("%lld\n",num[n-1]*2%mod);}return 0;
}
水の三角(超级卡特兰数/大施罗德数)相关推荐
- 【组合数学】卡特兰数 / 大施罗德数 相关
在组合数学中,施罗德数用来描述从 (0,0)(0, 0)(0,0) 到 (n,n)(n,n)(n,n) 的网格中,只能使用 (1,0)(1,0)(1,0).(0,1)(0,1)(0,1).(1,1)( ...
- 阿里云天池超级码力在线编程大赛初赛 第2场 ABCD(A.计算几何 判断点在三角形内 D.大施罗德数/超级卡特兰数)
心得 打了一下被群友吐槽的比赛,阅读体验极差 阴间题面,读题1小时,AC5min,原题警告 思路来源 https://blog.csdn.net/PleasantlY1/article/details ...
- 超级卡特兰数(又称大施罗德数)
题目链接:https://www.nowcoder.com/acm/contest/146/B 把前四项丢进OEIS,就能知道是 施罗德数 参照百科:https://baike.baidu.com/i ...
- [超级码力在线编程大赛初赛(二)] 4.小栖的金字塔 施罗德数(超级卡特兰数)
题目链接:小栖的金字塔 题意 小栖可以在不同点间移动,假设小栖现在在(x1,y1){(x_1,y_1)}(x1,y1),他能够移动到的下一个点(x2,y2){(x_2,y_2)}(x2,y2) ...
- 【算法讲11:卡特兰数】默慈金数 | 那罗延数 | 施罗德数
[算法讲11:卡特兰数]默慈金数 | 那罗延数 | 施罗德数 ⌈\lceil⌈卡特兰数⌋\rfloor⌋Catalan Number 引入 思考 ⌈\lceil⌈卡特兰数⌋\rfloor⌋的性质 ⌈\ ...
- 阿里云 超级码力在线编程大赛初赛 第2场 题目4. 小栖的金字塔(超级卡特兰数+除法求模/乘法逆元)
文章目录 1. 题目 2. 解题 1. 题目 来源:https://tianchi.aliyun.com/oj/15165469968503404/76745683739284070 2. 解题 按道 ...
- 超级卡特兰数(bzoj 4706: B君的多边形)
4706: B君的多边形 Time Limit: 10 Sec Memory Limit: 128 MB Submit: 159 Solved: 92 [Submit][Status][Discu ...
- BZOJ4706 B君的多边形 (超级卡特兰数/施罗德数)
题目 权限题QAQ 题解 超级卡特兰数/施罗德数 CODE #include <bits/stdc++.h> using namespace std; const int MAXN = 1 ...
- 卡特兰数(n个节点的二叉树情况数量+hdu2067) (超级卡特兰数(施罗德数))
卡特兰数是组合数学中一个常出现在各种计数问题中的数列. 举个栗子:1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786, 208012, 742 ...
最新文章
- python项目-2019年5月GitHub上热门的Python项目
- MB1A MB1B MB1C MB11 MIGO的区别解析
- pycharm安装scrapy失败_Scrapy ——环境搭配与一个简单的例子
- 工程制图 (装配图)
- C# Socket网络编程精华篇
- 包含min函数的栈 python_面试题_设计包含 min函数的栈
- 【转】extern “C“和__declspec(dllexport)以及__declspec(dllimport) 和def的简单解析
- Moss 2007 入门(1) - 功能概述【转】
- android 关于提高第三方app的service优先级
- 击鼓传花:对比 muduo 与 libevent2 的事件处理效率
- python内置类型
- django -orm操作总结
- RSA私钥及公钥生成
- 三角网导线平差实例_三角网条件平差计算
- pandas.read_csv读取数据时出现省略号
- 扯ruan蛋的房价,恶心死了我
- java 兔子问题_Java算法之“兔子问题”
- 音质好的蓝牙耳机有哪些?音质好的蓝牙耳机推荐
- 智能玩具存在的安全隐患须知
- 钉钉小程序-打开外部链接(文件链接)