求有多少個長度在\(l,r\)之間,值域是\([1,n]\)的嚴格上公升子串行
\(1\leq t,n\leq 10^5,1\leq l\leq r\leq 10^5\)
先轉換成兩個字首和的差,那麼相當於我們要快速求
\[\sum_^m\binom
\]的值。
考慮到我們有組合數恒等式\(\binom n m=\binom+\binom\)。
如果我們知道了\(f(n,m)=\sum_^m\binom\),那麼有\(f(n+1,m)=2f(n,m)-\binom\)(也就是相當於複製乙份左移一位相加)。
然後\(f(n,m)\)都可以\(o(1)\)移動\(n,m\)了,直接上莫隊。
時間複雜度:\(o(n\sqrt n)\)
#include#include#include#define ll long long
using namespace std;
const ll n=5e5+10,p=998244353,t=500;
struct nodea[n];
ll n,m,fac[n],inv[n],ans[n];
ll c(ll n,ll m)
bool cmp(node x,node y)
for(ll i=1;i<=m;i++)
printf("%lld\n",(ans[i]+p)%p);
return 0;
}
計數 組合數學總結
本文持續更新 對計數,組合數學dp作總結,給出思路,狀態轉移方程,略去 狀態初始值等。1 劃分數 1 m個不可區分的物品分成n份,每份的數量大於等於0,求劃分的方法數。思路 1 若m n,則等價於m個物品劃分為m份。2 否則,若至少存在1份數量為0,則相當於m個物品劃分為n 1份 若每份數量大於等於...
組合數學 基本計數
計數問題研究的都是有限集合,本文介紹基本的計數方法,並應用它們解決常見的排列與組合問題。首先,回顧下幾個基本的概念及計數的兩個重要法則。概念1 集合元素的 m 元排列 集合a 有n個元素,從這n個元素中取乙個元素,不放回 連續取 m 次,得到序列 a1,a2,am,則稱 該序列為這n個元素的乙個 m...
組合數學 計數原理
計數原理 抽屜原理 有n個抽屜,n 1個蘋果,那麼至少有乙個抽屜有兩個或兩個以上的蘋果。有n個抽屜,n 1個蘋果,那麼至少有乙個抽屜沒有蘋果。加法原理 如果a類物品有a個,b類物品有b個,那麼a類物品或b類物品共有a b個 沒有性質相同的情況下 乘法原理 如果a有a中發生方式,b有b中發生方式,那麼...