題目是給你m個數字,讓你求1~n個數分別能構成的單調不降序列的個數的和且模乙個1e6+3
對於這道題,我們先考慮n個人,然後我們把m個數字分給n個人,但是會有有人分不到的情況,所以我們假設每人都能分到
這樣我們的總個數就變成了n+m個數字分給m個人,這樣我們用隔板法能得到c(m-1,n+m-1)
然後總和就是n取1~n個組合數加起來,然而組合數有乙個公式是c(m,n)=c(m,n-1)+c(m-1,n-1)
又由於c(m,m)=1,即c(m,1+m-1)=1,與c(m-1,m)合併後為c(m,m+1)
然後我們給整體總和的式子加1,化簡就能得到c(m,n+m)-1
ac**如下:
#include
#define int long long
using
namespace std;
const
int mod=
1e6+3;
int fac[mod+10]
,ifac[mod+10]
,n,l,r,t;
;inline
long
longc(
int n,
int m)
inline
long
long
lucas
(int n,
int m)
signed
main()
return0;
}
BZOJ4403 序列統計
description 給定三個正整數n l和r,統計長度在1到n之間,元素大小都在l到r之間的單調不降序列的數量。輸出答案對10 6 3取模的結果。input 輸入第一行包含乙個整數t,表示資料組數。第2到第t 1行每行包含三個整數n l和r,n l和r的意義如題所述。output 輸出包含t行,...
BZOJ4403 序列統計
推導式子 baidu可得 設m r l 1 長度為i,元素大小在1 m之間的單調不降序列的數量有cm 1i m 1個 故答案為 n i 1 cm 1 i m 1 ni 1 cm 1i m 1 cm m 1 ni 2 cm 1i m 1 cm m 1 1 ni 3 cm 1i m 1 cm m 2 1...
BZOJ4403 序列統計
標籤 lucas定理,逆元 description 給定三個正整數n l和r,統計長度在1到n之間,元素大小都在l到r之間的單調不降序列的數量。輸出答案對10 6 3取模的結果。input 輸入第一行包含乙個整數t,表示資料組數。第2到第t 1行每行包含三個整數n l和r,n l和r的意義如題所述。...