傳送門
給定n 、l
、r
n、l、r
n、l、
r,求出長度在n
nn以內,選定元素都是整數且在l—r
l—rl—
r之間的單調不下降序列
我們先看到題目要求在l—r
l—rl—
r之間,我們不妨將每個數都−l+
1-l+1
−l+1
,那這樣我們就把範圍轉化到1—r
−l+1
(m
)1—r-l+1(m)
1—r−l+
1(m)
再然後,我們發現題目要求的是單調不下降序列,這樣會很煩,所以我們對於第i
ii個數+i−
1+i-1
+i−1
,如此就變成了單調上公升序列了
因為單調上公升序列的每個元素和之前序列的每個元素是一一對應的,所以我們直接算出單調上公升序列的答案就好了
因為是在1—n
+m−1
1—n+m-1
1—n+m−
1這麼多的數中選出1—n
1—n1—
n個,所以我們就的得到了最原始公式:
∑ i=
1nci
+m−1
i\sum_^nc_^i
i=1∑n
ci+m
−1i
根據組合數的性質我們進一步化簡:
∑ i=
1nci
+m−1
m−
1\sum_^nc_^
i=1∑n
ci+m
−1m−
1因為有式子:∑k=
0nck
m=cn
+1m+
1\sum_^nc_k^m=c_^
∑k=0n
ckm
=cn+
1m+1
所以上面乙個式子又可以化簡為:
c n+
mm−1
c_^m-1
cn+mm
−1
#include
#include
#include
#include
#include
#include
#include
#define lzx 1000003
#define ll long long
using namespace std;
inline ll read()
while
(s>=
'0'&&s<=
'9')
return d*f;
}ll c[
1000010];
ll ksm
(ll x,ll y)
return s;
}ll c
(ll n,ll m)
ll lucas
(ll n,ll m)
intmain()
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的意義如題所述。...