AcWing 889. 满足条件的01序列(卡特兰数应用)

满足条件的01序列

假设长度为n个序列要求满足题意1的前缀0的个数不能超过1的个数
将问题抽象为从(0, 0)到(n, n)
向上走一个代表这一步对应序列中的值是1,向右走代表序列中的值是0
图来自番茄酱
要想满足1的前缀0的数量大于1的数量就需要满足所有路过的途径在y = x这个函数个下面
但是如何表达呢?
我们采用所有到(n, n)的方案的集合减去越过y = x + 1这个直线的方案集合
因为越过y = x + 1 这个直线的方案集合可以表示为从(0, 0)到(n - 1, n + 1){(n, n)关于 y = x + 1对称的点}的方案集合
而这个答案 C ( n 2 n ) − C ( n − 1 2 n ) C\binom{n}{2n} - C\binom{n - 1}{2n} C(2nn)C(2nn1)
= 2 n ! n ! ∗ n ! − 2 n ! ( n + 1 ) ! ( n − 1 ) ! = \frac{2n!}{n!*n!} - \frac{2n!}{(n + 1)!(n - 1)!} =n!n!2n!(n+1)!(n1)!2n!

= 2 n ! ∗ ( n + 1 ) n ! ∗ ( n + 1 ) ! − 2 n ! ∗ n n ! ∗ ( n + 1 ) ! = \frac{2n!*(n + 1)}{n! * (n + 1)!} - \frac{2n! * n}{n! * (n + 1)!} =n!(n+1)!2n!(n+1)n!(n+1)!2n!n

= 1 ( n + 1 ) 2 n ! n ! ∗ n ! = \frac{1}{(n + 1)} \frac{2n!}{n!*n!} =(n+1)1n!n!2n!
称为卡特兰数

= C ( n 2 n ) n + 1 = \frac{C\binom{n}{2n}}{n + 1} =n+1C(2nn)
2n是x的跨度和y的跨度的和

AcWing 889. 满足条件的01序列

#include <iostream>
#include <cstring>
#include <algorithm>using namespace std;
typedef long long LL;
const int mod = 1e9 + 7;
int n;int qmi(int a, int b, int c)
{int res = 1;while (b){if (b & 1) res = (LL) res * a % mod;a = (LL) a * a % mod;b >>= 1;}return res;
}int main()
{scanf("%d", &n);int x = 1, y = 1;for (int i = 1; i <= 2 * n; i ++) x = (LL)x * i % mod;for (int i = 1; i <= n; i ++) y = (LL)y * i % mod;//要注意除(n + 1) 也要求逆元因为后面还要% modprintf("%lld", (LL) x * qmi(y, mod - 2, mod) % mod * qmi(y, mod - 2, mod) % mod * qmi(n + 1, mod - 2, mod) % mod);return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/287148.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

添加ASP.NET网站资源文件夹

ASP.NET应用程序包含7个默认文件夹&#xff0c;分别为Bin、APP_Code、App_GlobalResources、App_LocalResources、App_WebReferences、App_Browsers和“主题”文件夹。每个文件夹都存放ASP.NET应用程序的不同类型的资源。 方法 说明Bin  包含程序所需的所有已编译程序集&#…

《看聊天记录都学不会Python到游戏实战?太菜了吧》(8)我们开始做一个数字小游戏吧

本系列文章将会以通俗易懂的对话方式进行教学&#xff0c;对话中将涵盖了新手在学习中的一般问题。此系列将会持续更新&#xff0c;包括别的语言以及实战都将使用对话的方式进行教学&#xff0c;基础编程语言教学适用于零基础小白&#xff0c;之后实战课程也将会逐步更新。 若…

Microsoft SQL Server 2019开发版安装配置教程

一、安装cn_sql_server_2019_developer_x64 双击setup.exe进行安转。 点击【安装】。 点击【全新SQL Server独立按住啊或向现有安装添加功能】。 点击【下一步】。

Git提示Please move or remove them before you switch branches.

1 问题 git checkout V1 提示错误如下 error: The following untracked working tree files would be overwritten by checkout:flutter_module/pubspec.lock Please move or remove them before you switch branches. Aborting2 解决办法 git clean -df ../flutter_module…

c语言创建新指针,如何用c语言创建一个指针

您总是可以将指针强制转换为整数&#xff0c;即整数大小比系统中使用的字节指针大3位。然后在向左移动3位后移动指针。然后将位信息存储在最低有效3位上。然后可以用正常算术递增该整数“位指针”。像这样的东西&#xff1a;#include #define bitptr long long#define create_b…

请查收最新的 EF Core 7.0 更新

关注我们作者&#xff1a;Jeremy Likness排版&#xff1a;Rani近期.NET 数据团队宣布了 EF Core 7.0 (EF7)的第四个预览版。除了bug修复和更大功能的基础工作外&#xff0c;此预览版还包括以确保转换器和比较器由类型映射处理&#xff0c;并支持将转换器与值生成器一起使用。请…

【CC精品教程】ContextCapture 4.4.12(CC,Smart 3D)简体中文版安装教程(附安装包下载)

ContextCapture 4.4.12简体中文版是一款功能强大的三维建模软件,用户只需使用自己拍摄的普通照片,就能快速创建细节丰富的三维实景模型,并在项目的整个生命周期内为设计、施工和运营决策提供精确的现实环境背景。 目 录 一、安装过程 1. 安装主程序cncpc040412333en_updt1…

《看聊天记录都学不会C#?太菜了吧》(4)C# 中的尚方宝剑 “先斩后奏”

本系列文章将会以通俗易懂的对话方式进行教学&#xff0c;对话中将涵盖了新手在学习中的一般问题。此系列将会持续更新&#xff0c;包括别的语言以及实战都将使用对话的方式进行教学&#xff0c;基础编程语言教学适用于零基础小白&#xff0c;之后实战课程也将会逐步更新。 若…

Android之解决多语言适配部分TextView内容左对齐和内容一行不排满就到第二行问题

1 问题 1、多语言适配部分TextView内容左对齐 2、内容一行不排满就到第二行问题 2 解决办法 问题1、在TextView里面加入下面参数 android:gravity="center" 问题2、 import android.content.Context; import android.graphics.Paint; import android.text.TextUti…

如何用 Swift 语言构建一个自定控件

本文译自&#xff1a;How To Make a Custom Control in Swift 用户界面控件是所有应用程序重要的组成部分之一。它们以图形组件的方式呈现给用户&#xff0c;用户可以通过它们与应用程序进行交互。苹果提供了一套控件&#xff0c;例如 UITextField&#xff0c;UIButton&#xf…

【ArcGIS遇上Python】ArcGIS Python获取Shapefile矢量数据字段名称

借助PyCharm环境&#xff0c;在不打开ArcGIS的情况下&#xff0c;编写Python代码&#xff0c;获取矢量数据的所有字段。 import arcpyshp C:\data\out\Export_Output.shp fields arcpy.ListFields(shp) for f in fields:print f.name‘,’f.type运行结果&#xff1a; C:\Pyt…

《聪明人和傻子和程序员》

本文借鉴自鲁迅杂文《聪明人和傻子和奴才》&#xff0c;如有雷同&#xff0c;纯属巧合。有个程序员特别喜欢寻人诉苦&#xff0c;只要一点事&#xff0c;就喜欢诉苦。有一日&#xff0c;他遇到一个聪明人。“大佬。”他悲哀的说&#xff0c;“我们公司待遇越来越差了&#xff0…

c语言 case语句用法,switch ... case语句的用法[组图]

switch ... case语句的用法[组图]08-13栏目&#xff1a;技术TAG&#xff1a;switch case语句switch case语句当情况大于或等于4种的时候就用switch ... case语句copyright jhua.orgswitch(表达式) copyright jhua.org{ https://www.jhua.orgcase 常量1&#xff1a; 语句体1&am…

《看聊天记录都学不会C#?太菜了吧》(5)C# 中可以用中文名变量?

本系列文章将会以通俗易懂的对话方式进行教学&#xff0c;对话中将涵盖了新手在学习中的一般问题。此系列将会持续更新&#xff0c;包括别的语言以及实战都将使用对话的方式进行教学&#xff0c;基础编程语言教学适用于零基础小白&#xff0c;之后实战课程也将会逐步更新。 若…

Android之TabLayout和ViewPager组合跳转到指定页面

1 问题 TabLayout和ViewPager组合跳转到具体一个页面 2 解决办法 viewPager?.setCurrentItem(index) index为0说明是第一页&#xff0c;如果是1的话就是第二页&#xff0c;以此类推。

【ArcGIS遇上Python】ArcGIS Python中文编码问题案例详解

前面的文章《ArcGIS Python获取Shapefile矢量数据字段名称》我们已经学会了如何用 Python 获取中文路径下的shp数据的所有字段,英文没有问题,但是如果你输出中文路径下的数据字段, 就有可能会碰到中文编码问题。 Python 文件中如果未指定编码,在执行过程会出现报错: impo…

gRPC编码初探(java)

背景&#xff1a;gRPC是一个高性能、通用的开源RPC框架&#xff0c;其由Google主要面向移动应用开发并基于HTTP/2协议标准而设计&#xff0c;基于ProtoBuf(Protocol Buffers)序列化协议开发&#xff0c;且支持众多开发语言。gRPC提供了一种简单的方法来精确地定义服务和为iOS、…

WPF 基础控件之 RadioButton 样式

其他基础控件1.Window2.Button3.CheckBox4.ComboBox5.DataGrid 6.DatePicker7.Expander8.GroupBox9.ListBox10.ListView11.Menu12.PasswordBox13.TextBox14.ProgressBarRadioButton 实现下面的效果1&#xff09;RadioButton来实现动画&#xff1b;Border嵌套 Ellipse并设置Sca…

对归并排序进行c语言编程实现,归并排序及C语言实现

排序系列之(1)归并排序及C语言实现有很多算法在结构上是递归的&#xff1a;为了解决一个给定的问题&#xff0c;算法需要一次或多次递归的调用其本身来解决相关的问题。这些算法通常采用分治策略&#xff1a;将原问题划分成n个规模较小而结构与原问题相似的子问题&#xff1b;递…

Android之提示错误Can not perform this action after onSaveInstanceState

1 问题 主页面3个Fragment,在第三个Fragment里面开启了Activity之后,然后想跳到第一个Fragment代码如下 /*** 展示Fragment*/private fun showFragment(fragment: Fragment) {if (currentFragment !== fragment) {val transaction: FragmentTransaction = supportFragmentMa…