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...