UOJ 291 ZJOI2017 樹狀陣列

2021-07-29 12:55:21 字數 1769 閱讀 4453

二維數點

首先推一推性質大概可以發現這是單點修改,求字尾和

(其實也可以理解為區間(字首)修改,單點查詢)

然後再簡單推一推就可以知道如果i被修改了a[i]次,總共修改了sum次

如果l=1,算錯的情況就是sum ^ a[r] = 1

否則就是a[l - 1] ^ a[r] = 1

然後如果只是單點查詢,我們就可以直接線段樹

但是如果l-1,r都被某個區間覆蓋,它們並不會同時被修改

所以我們要分類討論,就變成了二維數點問題,一維左端點,一維右端點

然後樹套樹

#include #define xx first

#define yy second

#define mp make_pair

#define pb push_back

#define fill( x, y ) memset( x, y, sizeof x )

#define copy( x, y ) memcpy( x, y, sizeof x )

using namespace std;

typedef long long ll;

typedef pair < int, int > pa;

inline int read()

const int maxn = 400010;

const int maxm = 70000000;

const int mod = 998244353;

int n, rt[maxn], f[maxm], ls[maxm], rs[maxm], cur, q, tot;

inline int qpow(int x, int y)

inline int merge(int a, int b)

inline void add2(int &x, int l, int r, int ql, int qr, int v)

int mid = l + r >> 1;

if( qr <= mid ) add2( ls[ x ], l, mid, ql, qr, v );

else if( ql > mid ) add2( rs[ x ], mid + 1, r, ql, qr, v );

else add2( ls[ x ], l, mid, ql, mid, v ), add2( rs[ x ], mid + 1, r, mid + 1, qr, v );

}inline void add1(int x, int l, int r, int ql, int qr, int nxtl, int nxtr, int v)

int mid = l + r >> 1;

if( qr <= mid ) add1( x << 1, l, mid, ql, qr, nxtl, nxtr, v );

else if( ql > mid ) add1( x << 1 | 1, mid + 1, r, ql, qr, nxtl, nxtr, v );

else add1( x << 1, l, mid, ql, mid, nxtl, nxtr, v ), add1( x << 1 | 1, mid + 1, r, mid + 1, qr, nxtl, nxtr, v );

}inline int query2(int x, int l, int r, int p)

inline int query1(int x, int l, int r, int p, int v)

int main()

else

}}

UOJ 308 UNR 2 UOJ拯救計畫

uoj 如果模數很奇怪,我們可以插值一下,設 f i 表示用了 i 種顏色的方案數。然而模 6 這個東西很有意思,6 2 3 所以我們只需要考慮其模 2 和模 3 的結果了。而最終答案的貢獻是 sum k a i f i 當 i ge 3 的時候 6 a k i 所以我們只需要知道 f 0 f 1 ...

uoj308 UNR 2 UOJ拯救計畫

傳送門 題解 考慮列舉用了 i 所學校,那麼貢獻為 cnt i 意思是從 k 所選 i 所出來染色,cnt 為固定顏色順序的染色方案,i 為可以交換學校位置。考慮當 i geq 3 的時候,貢獻含有模數因子6,所以模6為0,相當於沒有貢獻。當 i 1 顯然只有 m 0 有貢獻。對於 m 0 我們特判...

Uoj308 UNR 2 UOJ拯救計畫

分析 比較難分析的一道題,先把式子寫出來,ans c k,i f i f i 是選i個顏色的方案數.這個模數有點奇怪,比較小而且是合數,說不定就會有某種規律,如果i 3,可以發現c k,i 一定是被6整除的,那麼我們只需要考慮i 2和i 1的情況,i 1的情況比較好處理,這種情況下,m只有等於0,答...