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(2nn?1?)
= 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)!(n?1)!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)1?n!?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.pswp.cn/news/287148.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/287148.shtml
英文地址,請注明出處:http://en.pswp.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…