LOJ 573 LNR 2 單槍匹馬(線段樹)

2022-03-19 20:28:05 字數 1078 閱讀 5349

loj

考慮拿線段樹維護這個值,現在的問題就是左右怎麼合併,那麼就假設最右側進來的那個分數是\(\frac\)的形式,那麼就可以維護一下每乙個值的係數,就可以直接合併了。

我**又臭又長,還寫得賊複雜

#include#includeusing namespace std;

#define mod 998244353

#define max 1000500

#define lson (now<<1)

#define rson (now<<1|1)

inline int read()

int n,m,type,a[max],n,mx;

struct num;

num operator+(num a,num b);}

num operator*(num a,int b);}

struct fact;

fact operator+(fact a,int b);}

fact rev(fact a);}

fact value(fact a,int x,int y)

,(num)};

}struct nodet[max<<2];

node calc(node l,node r)

; num b=(num);

ret.v=(fact);

return ret;

}void modify(int now,int l,int r,int p)

,(num)};

t[now].v=(fact),(num)}+a[l];

return;

} int mid=(l+r)>>1;

if(p<=mid)modify(lson,l,mid,p);

else modify(rson,mid+1,r,p);

t[now]=calc(t[lson],t[rson]);

}node query(int now,int l,int r,int l,int r)

int main()

else

}return 0;

}

Loj10166 數字遊戲2

題目描述 由於科協裡最近真的很流行數字遊戲,某人又命名了一種取模數,這種數字必須滿足各位數字之和 modn 為 000。現在大家又要玩遊戲了,指定乙個整數閉區間 a,b a,b a,b 問這個區間內有多少個取模數。列舉每一位,記錄每一次列舉 n的餘數,當列舉完時,如果餘數是0,就 1,否則 0.in...

Loj10166 數字遊戲2

題目描述 由於科協裡最近真的很流行數字遊戲,某人又命名了一種取模數,這種數字必須滿足各位數字之和 modn 為 000。現在大家又要玩遊戲了,指定乙個整數閉區間 a,b a,b a,b 問這個區間內有多少個取模數。列舉每一位,記錄每一次列舉 n的餘數,當列舉完時,如果餘數是0,就 1,否則 0.in...

LOJ 6278 數列分塊入門 2

題意 給出乙個長為 n 的數列,以及 n個操作,操作涉及區間加法,詢問區間內小於某個值 x的元素個數。思路 這裡有兩種操作,一種是區間加法,這在上一部落格已經介紹過了,不會的戳這裡,還有一種是區間查詢,因為每次查詢的數字都是不一樣的,所以要想時間最優化,必須要排序,因為排序後的查詢操作可以達到log...