洛谷 P8705:[藍橋杯 2020 省 B1] 填空題之“試題 E :矩陣” ← 卡特蘭數

【題目來源】
https://www.luogu.com.cn/problem/P8705

【題目描述】
1~2020 放在 2×1010 的矩陣里。要求同一行中右邊的比左邊大,同一列中下邊的比上邊的大。一共有多少種方案?
答案很大,你只需要給出方案數除以 2020 的余數即可。

【答案提交】
這是一道結果
填空題,你只需要算出結果后提交即可。
本題的結果為一個整數,在提交答案時只填寫這個整數,填寫多余的內容將無法得分。

【算法分析】
● 卡特蘭數(Catalan number)是
組合數學中一個常出現在各種計數問題中的數列。若從第 0 項開始,則卡特蘭數列 h[n] 為:1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786, 208012, 742900, 2674440, 9694845, 35357670, 129644790, …。

● 常用的卡特蘭數列 h[n] 有如下 4 種等價的遞推式
h[n]=
h[0]*h[n?1]+h[1]*h[n?2]+...+h[n?1]*h[0], (n≥2, h[0]=h[1]=1)
h[n]=h[n?1]*(4*n?2)/(n+1), (n≥2)
h[n]=C(2n,n)?C(2n,n?1), (n=0,1,2,...)
h[n]=C(2n,n)/(n+1), (n=0,1,2,...)

● 卡特蘭數的第 20 項為 6564120420,大于 2×10^9,所以代碼中要聲明為
long long 型。

● 矩陣填充與進棧出棧過程的對應關系以及和卡特蘭數的聯系
(1)第一行填充對應
進棧:當我們從左到右填充矩陣的第一行時,每放入一個數字,就相當于一個元素進棧。因為第一行的數字是依次增大的,就好像元素依次進入棧中,且棧內元素是按照進棧順序依次排列(從小到大)。
(2)第二行填充對應
出棧:當我們開始填充矩陣的第二行時,由于要滿足同一列下邊的數字比上邊大,所以放入第二行的數字必須是已經在第一行出現過的數字,這就類似于元素出棧。

(3)可以將進棧(push)操作看作在平面直角坐標系中向沿 x 軸正向走一步,出棧(pop)操作看作沿 y 軸正向走一步。要完成 n 個元素的進棧和出棧操作,最終需要從原點(0,0)走到點(n,n)。但由于合法的進棧出棧序列要求在任何時刻出棧次數不超過進棧次數,所以對應的路徑不能穿過直線 y=x,只能在直線 y=x 及其下方行走。最終,可得合法的出棧序列數就是卡特蘭數的第 n 項:h[n]=h[0]*h[n?1]+h[1]*h[n?2]+...+h[n?1]*h[0], (n≥2, h[0]=h[1]=1)。

【算法代碼】

#include<bits/stdc++.h>
using namespace std;const int maxn=2e5+5;
long long c[maxn];
int n;int main() {cin>>n; //n=1010c[0]=1,c[1]=1;for(int i=2; i<=n; i++) {for(int j=0; j<=i-1; j++) {c[i]+=c[j]*c[i-j-1];c[i]%=2020;}}cout<<c[n];return 0;
}/*
in:1010
out:1340
*/





【參考文獻】
https://blog.csdn.net/hnjzsyjyj/article/details/145830268
https://blog.csdn.net/hnjzsyjyj/article/details/145842440
https://blog.csdn.net/hnjzsyjyj/article/details/129148916
https://www.acwing.com/file_system/file/content/whole/index/content/3766019/
?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/896351.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/896351.shtml
英文地址,請注明出處:http://en.pswp.cn/news/896351.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

我是如何從 0 到 1 找到 Web3 工作的?

作者&#xff1a;Lotus的人生實驗 關于我花了一個月的時間&#xff0c;從 0 到 1 學習 Web3 相關的知識和編程知識。然后找到了一個 Web3 創業公司實習的遠程工作。 &#x1f447;&#x1f447;&#x1f447; 我的背景: 計算機科班&#xff0c;學歷還可以(大廠門檻水平) 畢業工…

量子網絡:構建與應用前景的展望

大家好,我是Echo_Wish,今天我們來探討一個極具前瞻性的領域——量子網絡的構建與應用前景。隨著量子計算的發展,量子網絡作為量子信息科學的重要組成部分,正在引起越來越多的關注。本文將深入解析量子網絡的構建原理,并展望其應用前景。 量子網絡的基本概念 量子網絡是指…

數據庫二三事(8)

高級數據查詢 top詞語法格式&#xff1a;TOP n &#xff08;percent&#xff09;&#xff08;with ties&#xff09; 查詢前n&#xff08;%&#xff09;行數據&#xff0c;&#xff08;包括最后一行取值并列&#xff09; 搭配 order by case&#xff1a; CASE &#xff08;…

linux中conda3安裝

1、下載安裝包 清華源-》https://mirrors.tuna.tsinghua.edu.cn/# 本文使用Anaconda3-2022.10&#xff0c;對應的下載路徑-》https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-2022.10-Linux-x86_64.sh 2、將下載到的sh腳本放在Linux中用sh腳本解析器執行 …

2025最新智能優化算法:人工旅鼠算法(Artificial Lemming Algorithm, ALA)求解23個經典函數測試集,MATLAB

一、人工旅鼠優化算法 人工旅鼠算法&#xff08;Artificial Lemming Algorithm, ALA&#xff09;是2025年提出的一種新型生物啟發式優化算法&#xff0c;受旅鼠的四種典型行為啟發&#xff1a;長距離遷徙、挖洞、覓食和躲避捕食者。該算法通過模擬這些行為來解決復雜的優化問題…

Python游戲編程之賽車游戲6-2

3.2 move()方法的定義 Player類的move()方法用于玩家控制汽車左右移動&#xff0c;當玩家點擊鍵盤上的左右按鍵時&#xff0c;汽車會相應地進行左右移動。 move()方法的代碼如圖7所示。 圖7 move()方法的代碼 其中&#xff0c;第20行代碼通過pygame.key.get_pressed()函數獲…

日語學習-日語知識點小記-構建基礎-JLPT-N4N5階段(12):普通(ふつう)形 :變化方式 :日常朋友家人之間對話

日語學習-日語知識點小記-構建基礎-JLPT-N4&N5階段(12):普通(ふつう)形 :變化方式 :日常朋友&家人之間對話  1、前言(1)情況說明(2)工程師的信仰2、知識點(1)普通(ふつう)形:Plain style:簡體3、單詞(1)日語單詞(2)日語片假名單詞4、相近詞辨…

華為hcia——Datacom實驗指南——二層交換原理

實驗配置 eNSP 什么是二層交換 二層交換是指在同一個ip網段內&#xff0c;數據通過二層交換機進行轉發。 什么是mac地址 mac地址也叫做硬件地址&#xff0c;是以太網協議的鏈路層地址。簡單的來說&#xff0c;mac地址就是我們硬件的身份證&#xff0c;獨一無二。它是由48個bi…

粘貼到Word里的圖片顯示不全

粘貼到Word里的圖片顯示不全&#xff0c;可從Word設置、圖片本身、軟件與系統等方面著手解決&#xff0c;具體方法如下&#xff1a; Word軟件設置 經實踐發現&#xff0c;圖片在word行距的行距出現問題&#xff0c;可以按照如下調整行距進行處理 修改段落行距&#xff1a; 選…

HTML轉義和反轉義工具類

HTML轉義和反轉義工具類 package com.common.utils;import cn.hutool.http.HTMLFilter; import org.apache.commons.lang3.StringUtils;/*** 轉義和反轉義工具類** author lxx*/ public class EscapeUtil {public static final String RE_HTML_MARK "(<[^<]*?>…

Android之圖片保存相冊及分享圖片

文章目錄 前言一、效果圖二、實現步驟1.引入依賴庫2.二維碼生成3.布局轉圖片保存或者分享 總結 前言 其實現在很多分享都是我們自定義的&#xff0c;更多的是在界面加了很多東西&#xff0c;然后把整個界面轉成圖片保存相冊和分享&#xff0c;而且現在分享都不需要第三方&…

以繪圖(繪制點、直線、圓、橢圓、多段線)為例子 通過設計模式中的命令模式實現

為了在命令模式的基礎上實現撤銷&#xff08;Undo&#xff09;和回退&#xff08;Redo&#xff09;功能&#xff0c;我們可以在每個命令類中記錄一些必要的狀態&#xff0c;允許我們撤銷之前的操作&#xff0c;并在需要時回退操作。常見的做法是使用一個命令堆棧來存儲歷史命令…

git從本地其他設備上fetch分支

在 Git 中&#xff0c;如果你想從本地其他設備上獲取分支&#xff0c;可以通過以下幾種方式實現。不過&#xff0c;需要注意的是&#xff0c;Git 本身是分布式版本控制系統&#xff0c;通常我們是從遠程倉庫&#xff08;如 GitHub、GitLab 等&#xff09;拉取分支&#xff0c;而…

故障診斷 | Matlab實現基于DBO-BP-Bagging多特征分類預測/故障診斷

故障診斷 | Matlab實現基于DBO-BP-Bagging多特征分類預測/故障診斷 目錄 故障診斷 | Matlab實現基于DBO-BP-Bagging多特征分類預測/故障診斷分類效果基本介紹模型描述DBO-BP-Bagging蜣螂算法優化多特征分類預測一、引言1.1、研究背景和意義1.2、研究現狀1.3、研究目的與方法 二…

CentOS停服后的替代選擇:openEuler、Rocky Linux及其他系統的未來展望

CentOS停服后的替代選擇&#xff1a;openEuler、Rocky Linux及其他系統的未來展望 引言CentOS停服的背景華為openEuler&#xff1a;面向未來的開源操作系統1. 簡介2. 特點3. 發展趨勢 Rocky Linux&#xff1a;CentOS的精神繼承者1. 簡介2. 特點3. 發展趨勢 其他可選的替代系統1…

docker部署go簡單web項目(無mysql等附加功能)

首先準備好go語言代碼 代碼表示當訪問主機上8080端口下的/hello路徑時&#xff0c;會返回hello&#xff0c;world。 package mainimport ("fmt""github.com/gin-gonic/gin" )type hh struct {S string }func main() {router : gin.Default()router.GET(&…

OceanBase數據庫實戰:Windows Docker部署與DBeaver無縫對接

一、前言 OceanBase 是一款高性能、高可擴展的分布式數據庫&#xff0c;適用于大規模數據處理和企業級應用。 隨著大數據和云計算的普及&#xff0c;OceanBase 在企業數字化轉型中扮演著重要角色。學習 OceanBase 可以幫助開發者掌握先進的分布式數據庫技術&#xff0c;提升數…

在 HuggingFace 中使用 SSH 進行下載數據集和模型

SSH 是一種 安全通訊的協議&#xff0c;我們通過配置 SSH 的密鑰 來在 Git 上實現 Huggingface 模型的命令行下載。 參考網址&#xff1a;https://huggingface.co/docs/hub/security-git-ssh 點擊自己的頭像&#xff0c;點擊 Add SSH key 在 Windows 上&#xff0c;我們實現已…

.NET Core MVC IHttpActionResult 設置Headers

最近碰到調用我的方法要求返回一個代碼值&#xff0c;但是要求是不放在返回實體里&#xff0c;而是放在返回的Headers上 本來返回我是直接用 return Json(res) 這種封裝的方法特別簡單&#xff0c;但是沒有發現設置headers的地方 查詢過之后不得已換了個返回 //原來方式 //…

Linux-----進程間通信

一、按通信范圍分類 同一主機進程通信 傳統IPC方式&#xff1a; 管道&#xff08;無名管道、有名管道&#xff09;信號&#xff08;Signal&#xff09; System V IPC&#xff1a; 共享內存&#xff08;效率最高&#xff09;消息隊列信號量 POSIX IPC&#xff08;較新標準&#…