1315. 网格 - 卡特兰数

2023-10-13 03:52
文章标签 卡特兰 网格 1315

本文主要是介绍1315. 网格 - 卡特兰数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1315. 网格 - AcWing题库

 

只要是触及上面这条红线的,就以第一次触及的点为起点沿红线反转,终点的位置与红线对称的位置可以看作触及红线的路线的终点。

y=x+1

横坐标容易得出时m - 1,(m + n) - (m - 1)得出纵坐标n + 1

答案就是C_{n+m}^{m}-C_{n+m}^{n+1}

#include<bits/stdc++.h>
#define IOS ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define endl '\n'using namespace std;typedef pair<int, int> PII;
typedef long long ll;
typedef long double ld;const int N = 10010;int n, m;
int primes[N], cnt;
bool st[N];void init()
{for(int i = 2; i < N; i ++){if(!st[i])primes[cnt ++] = i;for(int j = 0; primes[j] * i < N; j ++){st[primes[j] * i] = true;if(i % primes[j] == 0)break;}}
}int get(int n, int p)
{int c = 0;while(n){c += n / p;n /= p;}return c;
}vector<int> mul(vector<int> &A, int b)
{int t = 0;vector<int> C;for(int i = 0; i < A.size(); i ++){t += A[i] * b;C.push_back(t % 10);t /= 10;}while(t){C.push_back(t % 10);t /= 10;}return C;
}vector<int> C(int a, int b)
{vector<int> A;A.push_back(1);for(int i = 0; primes[i] <= a; i ++){int p = primes[i];int s = get(a, p) - get(b, p) - get(a - b, p);for(int j = 0; j < s; j ++)A = mul(A, p);}return A;
}vector<int> sub(vector<int> &A, vector<int> &B)
{vector<int> c;int t = 0;for(int i = 0; i < A.size(); i ++){t = A[i] - t;if(i < B.size())t -= B[i];c.push_back((t + 10) % 10);if(t < 0)t = 1;else t = 0;}while(c.size() > 1 && c.back() == 0)c.pop_back();return c; 
}int main()
{IOSinit();cin >> n >> m;vector<int> c1 = C(n + m, n), c2 = C(n + m, m - 1);c1 = sub(c1, c2);for(int i = c1.size() - 1; i >= 0; i --){cout << c1[i];}return 0;
} 

 

这篇关于1315. 网格 - 卡特兰数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/200591

相关文章

hdu4828(卡特兰数+逆元)

这题的前几个数据分别为1,2,5,14,32......................然后确定这是个卡特兰数列 下面来介绍下卡特兰数,它的递推式为f[i+1] = f[i]*(4*n - 6)/n,其中f[2] = f[3] =1;f[4] = 2;f[5] = 14;f[6] = 32.................................. 但是这题的n太大了,所以要用到逆元,

”CSS 网格“二维布局系统(补充)——WEB开发系列32

CSS 网格布局是一种二维布局系统,用于网页设计。通过使用网格,你可以将内容以行和列的形式进行排列。此外,网格布局还能够简便地实现一些复杂的布局结构。 一、什么是网格布局? CSS网格布局是一种二维布局系统,它允许我们创建复杂的网页布局,既可以处理行也可以处理列。与传统的布局方法不同,网格布局将网页分成多个可控的区域,这些区域可以任意排列、对齐和调整大小。网格布局使得创建灵活且响应

css——网格布局

名词解释 div{$}*9+tab键,快捷生成   记首字母gtc  网格布局:display: grid;        grid-template-columns: 100px 100px 100px;        grid-template-rows: 100px 100px 100px; (父元素) <!DOCTYPE html><html lang="en"

Data Mesh,数据网格的道与术

周末的时候,看到有群友讨论关于 Data Mesh 的话题。这个名词我在2020年初的时候听到过一次,当时感觉就是一个概念,看的糊里糊涂,没有当回事。最近突然又被推上了话题风口,所以静下心来看了一下相关的论文和介绍。 在讨论 Data Mesh 之前,首先要给大家介绍一下 Service Mesh。 Service Mesh 公认的定义,是用以处理服务与服务之间通信的专用基础设施层。更本质的理

图像数据到网格数据-3——Cuberille算法

前言   这是本博客网格生成算法系列的第三篇,第一篇里面介绍了最为流行的MarchingCubes算法,第二篇中使用新三角形表来对MC算法进行了简化改进,形成了SMC算法。而这篇将介绍一种新的不同与MC算法思路的新网格生成算法,叫做Cuberille法,这种算法的思想相比MC算法要简单,更加易于实现。   体素立方体模型   根据第一篇的介绍,我们知道MC算法的基本模型是把组成三

哈希表的应用-浅析顶点聚簇网格简化算法的实现

前言   本篇接顶点去重那一篇,继续使用哈希表来实现网格算法。这次介绍的是一种比较简单的网格简化算法,叫做顶点聚簇。   网格简化   为了介绍这个算法,首先说明一下网格简化算法。随着计算机绘图在现代科技领域中的广泛应用, 计算机图形在现代制造业中发挥着重要的作用。计算机图形学中对模型的要求更加精密, 也更加复杂, 生成的面片数也更加庞大, 庞大的数据量必然对计算机的计算能力提出

图像数据到网格数据-2——改进的SMC算法

概要   本篇接上一篇继续介绍网格生成算法,同时不少内容继承自上篇。上篇介绍了经典的三维图像网格生成算法MarchingCubes,并且基于其思想和三角形表实现了对样例数据的网格构建。本篇继续探讨网格生成算法,并且在MC的基础上进行进一步的简化和改进,形成Simple Marching Cubes(简称SMC算法)。本篇主要介绍SMC算法的思路以及与MC算法的对比。同时也介绍如何在MC三角形

ActiViz实战:使用Actor2D画一个二维网格

文章目录 一、效果预览二、交互三、C#源码示例 一、效果预览 二、交互 1、能实现等比缩放 2、不允许平移和旋转 3、能够与三维坐标大小匹配 三、C#源码示例 private void AddCudeAxes2D(){double scale =

【Rust光年纪】极致性能体验:数据管道实现、虚拟化列表和网格布局美化完全攻略

优秀开源库大揭秘:内存分析、数据处理、页面滚动监测、图片延迟加载全指南 前言 在当今的软件开发环境中,存在着各种各样的库和工具,它们为开发人员提供了丰富的功能和技术支持。本文将介绍几个与内存分析、数据处理、页面滚动状态监测、图片延迟加载、虚拟化长列表和网格布局美化相关的优秀库,帮助开发人员更好地理解和利用这些工具。 欢迎订阅专栏:Rust光年纪 文章目录 优秀开源库大揭秘:内

HDU 1130(卡特兰数,大数)

题意:如题。   import java.util.*;import java.math.*;public class Main{public static void main(String[] args) {int n;Scanner in=new Scanner(System.in);BigInteger one=BigInteger.ONE;BigInteger four