笨笨當了很久的道路排程員,笨笨也開始想體驗生活,從生活中發現數學問題,鍛鍊自己思維。最近《變形金剛3》,《哈利波特7》同步放映,明顯是決戰雌雄,已知王府井中一共有n人買了《變形金剛3》的票,m人買了《哈利波特7》的票,並且n>=m,並且電影院中現在只有兩種票,每次只有乙個人買,(共有n+m次),這n+m次組成乙個排列,為了保證每乙個人買票時,《變形金剛3》票房都不少於《哈利波特7》,(n個買《變形金剛3》的人之間沒區別,m個買《哈利波特7》的人也沒區別),笨笨想著到這樣的購票方案有多少種。笨笨想了好久都沒想出來,所以笨笨找到了你。
一行兩個數n,m ( 0<=m<=n<=5000)
輸出方案種數
0<=m<=n<=5000
類似的題目做過,購票問題
dfs爆搜可能性,優化剪枝一下可能拿10分+
經典的dp,設f[
i][j
] 表示前
i 人有
j人買《變形金剛3》則有 當j
∗2≥i
時f[i
][j]
+=f[
i−1]
[j] 第
i 人買《哈利波特7》 f[
i][j
]+=f
[i−1
][j−
1]第i
人買《變形金剛3》
注意需要高精度,考慮到時間複雜度為o(
(n+m
)∗n)
,再算上高精度時空都會爆,期望得分30,實際得分0(出題人的惡意)
假設將買《變形金剛3》票的人記為s,買《哈利波特7》的人記為x。
則n個買《變形金剛3》的與m個買《哈利波特7》的人的隊伍就可以用乙個具有n個s和m個x的字串,顯然這樣的字串共有c(n+m,n)個
其中不滿足問題要求的串一定存在乙個最靠左的位置p,使得從第乙個字元到第p個字元為止的子串中x的個數比s的個數大1。
如sxsxx…就是乙個不滿足條件的串,其中p=5。
我們將從頭到p為止的子串中的字元s換成x則得到乙個具有n+1個s,m-1個x的串。
可以證明這種轉換是一一對應的,即任意乙個n+1個s,m-1個x的串都可以按照逆規則轉換成乙個不滿足題目條件的串.
轉換規則為在任意乙個n+1個s,m-1個x中找到最靠左的p,使得從頭到p的子串中s的個數比x個數大1,將到p為止的子串中的s與x互換則得到n個s和m個x的串.
且此串一定不能滿足條件,而具有n+1個s,m-1個x的串只有c(n+m,n+1)
本段文字**某媳婦
計算的時候要高精度壓位,c++大數打起來很累但用著爽
#include
#include
#define mod 10000
#define maxn 1000
using
namespace
std;
struct num
;int v=0;
for (int i=maxn;i>0;i--)
return c;
}__attribute__((optimize("o2")))
inline num operator /(int x)
;int v=0;
for (int i=1;i<=maxn;i++)
return c;
}__attribute__((optimize("o2")))
inline num operator -(num b)
;int v=0;
for (int i=maxn;i>0;i--)
return c;
}__attribute__((optimize("o2")))
inline
void output()
while (s[j]/=10);
for (int k=1;k<=4;k++)
printf("%d",f[k]);
}printf("\n");
}};int main()
電影票 紀中 3057 數學
笨笨當了很久的道路排程員,笨笨也開始想體驗生活,從生活中發現數學問題,鍛鍊自己思維。最近 變形金剛3 哈利波特7 同步放映,明顯是決戰雌雄,已知王府井中一共有n人買了 變形金剛3 的票,m人買了 哈利波特7 的票,並且n m,並且電影院中現在只有兩種票,每次只有乙個人買,共有n m次 這n m次組成...
電影票房案例分析
import pandas as pd 載入資料 def read data file root dataframe pd.read csv file root print 資料的基本資訊 print dataframe.info print 資料的行是 i,列是 i dataframe.shape...
Python入門習題大全 電影票
有家電影院根據觀眾的年齡收取不同的票價 不到3歲的觀眾免費 3 12歲的觀眾為10美元 超過12歲的觀眾為15美元 請編寫乙個迴圈,在其中詢問使用者的年齡,並指出其票價。電影票 prompt please enter you age prompt nenter quit when you finis...