學習筆記 莫隊

2022-04-29 23:36:09 字數 1167 閱讀 8442

題意簡述:給定乙個長度為 \(n\) 的序列,每次給定乙個區間 \([l,r]\),求 \((r-l+1)!/(count(1)!\times count(2)!\times ...\times count(n)!)\)

先預處理出階乘和階乘的乘法逆元,然後每次更新除掉原來的數乘上後來的數就好了

\(code\ below:\)

#include #include #include #include #include #define ll long long

using namespace std;

const int maxn=30000+10;

const int p=1e9+7;

int n,m,a[maxn],cnt[maxn],ans[maxn],farc[maxn],inv[maxn],blo,now;

struct queryq[maxn];

bool cmp(query a,query b)

inline void add(int x)

inline void del(int x)

int main()

for(int i=1;i<=m;i++) printf("%d\n",ans[i]);

} return 0;

}

類似乙個不簡單的詢問的處理方式

\(code\ below:\)

#include #include #include #include #include #include #define ll long long

using namespace std;

const int maxn=100000+10;

int n,m,k,a[maxn],b[maxn<<1],c[maxn<<1],tot,blo;ll ans[maxn],now;

struct queryq[maxn<<2];

bool cmp(query a,query b)

sort(q+1,q+tot+1,cmp);

int l=0,r=0;

for(int i=1;i<=tot;i++)

for(int i=1;i<=m;i++) printf("%lld\n",ans[i]);

} return 0;

}

莫隊學習筆記

text text 借用的內容 一般的區間問題都可以使用莫隊。這是離線莫隊的裸的板子 真的就這麼短的四句話只是add和del裡面要加內容。至於塊的大小在這兒 對於複雜度的分析 text sum x i sqrt n sqrt o n sqrt text 由此可以推出 莫隊的複雜度大概就是乙個 the...

莫隊學習筆記

zl 姐姐有一串數,由於學生化太頭禿了,所以現在他想問你 m m 1e5 次,其中 l 到 r 區間出現次數在 3 次及以上的數有多少個?線段樹效率低下,不好維護。p.s.lmpp 巨佬說如果 3 次可以取等的話,線段樹反而效率更高,巨佬們可以自己嘗試,菜比這裡就不演示了 故引入莫隊 一種處理區間問...

學習筆記 樹上莫隊

其實樹上莫隊是乙個尤拉序而已嘛,像普通的莫隊,特判一下出現過兩次的值就行了 設 st i 為 i 進棧的時間,ed i 為 i 出棧的時間,dfn x,那麼就可以分兩種情況 1 y 在 x 子樹中,也就是 lca x,y x 那麼區間轉化成 st x,st y 2 y 不在 x 子樹中,也就是 lc...