P1754球迷購票問題

2022-03-10 18:41:11 字數 761 閱讀 3372

這是一道動態規劃題,其實也是個數論題。

有n人拿50,有n人拿100買票,必須讓50元的人買,不然無法找零錢,問最多有幾種方案可以每一次都買票成功。這個題首先令人想到搜尋,但是隨即發現dp是正解,於是dp[i][j]代表當50為i,100為j人時

最大的方案數,於是去推導方程,得到dp[i][j]=dp[i-1][j]+dp[i][j-1]。迴圈時j一定要小於i。當把結果算出來時,看題解發現這是個卡塔蘭數,完全可以寫遞推公式來寫。

1.迫切需要擺脫對題解的依賴

2.積累卡塔蘭數的模型,可以套用狀態轉移方程

3.排列組合計算範圍,大概率開long long

4.初始化一定要寫全

**

#include#include

#include

#include

#include

#define n 1001

using

namespace

std;

long

long dp[n][n];//

當前總共買到第n個時最大的方案數

intn;

intmain()

for(int i=1;i<=n;i++)

for(int i=1;i<=n;i++)

cout

}

P1754 球迷購票問題

原題鏈結 乙個長度為 2n 的括號序列由 n 個左括號和 n 個右括號組成,問有多少種合法方案 顯然對於任意時刻,要是能找開 b,那麼之前一定有乙個 a 給他提供了一張 50 的 money,如果將 a 看做是乙個左括號,將 b 看做是乙個右括號,那麼這道題就轉化成了 求合法括號序列的方案數 相信對...

洛谷 P1754 球迷購票問題

盛況空前的足球賽即將舉行。球賽門票售票處排起了球迷購票長龍。按售票處規定,每位購票者限購一張門票,且每張票售價為50元。在排成長龍的球迷中有n個人手持面值50元的錢幣,另有n個人手持面值100元的錢幣。假設售票處在開始售票時沒有零錢。試問這2n個球迷有多少種排隊方式可使售票處不致出現找不出錢的尷尬局...

洛谷P1754 球迷購票問題 題解

卡特蘭數經典 texttt 分拆問題。分析 題意相當於排列 n 個 texttt a 和 n 個 texttt b 使得相鄰 texttt 有序!消掉,然後左右元素並到一起再消,最後消完的序列個數。設 texttt 為乙個組 1 texttt 自巢狀一次為乙個組 2 即 texttt 以此類推。後面...