這是一道動態規劃題,其實也是個數論題。
有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 以此類推。後面...