牛客提高訓練營5A 同餘方程

2022-03-26 21:06:16 字數 1875 閱讀 2652

題目

吉老師的題做不動啊

首先\([l_1,r_1],[l_2,r_2]\)並不是非常好做,我們考慮將其拆成字首資訊

設\(solve(n,m)=\sum_^n\sum_^m[m|(i\bigoplus j)]\)

於是我們的答案就變成了\(solve(r_1,r_2)-solve(l_1-1,r_2)-solve(r_1,l_2-1)+solve(l_1-1,l_2-1)\)

考慮\(solve(r_1,r_2)\)怎麼求

乙個非常特殊的情況是\(r_1=2^n-1,r_2=2^m-1\),不妨假設\(n,則\([0,2^n)\)和\([0,2^m)\)各選擇乙個數異或起來,能取遍\([0,2^m)\),且每乙個數出現的次數都是\(2^n\)

正確性顯然

考慮推廣到更一般的情況,我們把\([0,r_1)\)拆分一下,拆分成\(\log\)段\([v,v+2^k)\)的區間,比如說對於\(101010\),可以拆成\([0,2^5),[2^5,2^5+2^3),[2^5+2^3,2^5+2^3+2^1)\)

這樣的拆分有乙個特點,如果有\(v\neq 0\),那麼一定會存在\(v>2^k\),這個性質接下來非常重要

將\([0,r_1),[0,r_2)\)各拆成\(\log\)段區間後,我們暴力從兩邊各選一段區間出來,假設為\([x,x+2^a)\)和\([y,y+2^b)\),還是不妨假設\(a

於是在忽略\(x,y\)的情況下兩個區間變成了\([0,2^a),[0,2^b)\),於是各選乙個異或起來能取遍\([0,2^b)\)且每個值能被異或出來\(2^a\)次

現在考慮把\(x,y\)引入,不難發現因為\(x>2^a\),所以從\([0,2^a)\)拿出乙個數,加上\(x\)和異或\(x\)是等價的;\(y\)那邊同理

於是\([0,2^b)\)中的每乙個數拿出來和\(x\bigoplus y\)異或一下,就是真實的從\([x,x+2^a)\)和\([y,y+2^b)\)各拿乙個數出來異或的結果。

所以現在只需要求出\([0,2^b)\)內有多少個滿足異或\(x\bigoplus y\)後\(\rm mod\ m=0\),這樣的數的個數乘上\(2^a\)就是答案了

做到這裡就不會了,接下來都是祖特教我的。

我們不難發現\(x\bigoplus y\)如果不是\(0\),則必然大於\(2^b\),於是\(x\bigoplus y\)和\([0,2^b)\)內的數異或,必然不會改變必\(2^b\)更高的二進位制位。

所以想要使得異或出來的數是\(m\)的倍數,只需要讓\(x\bigoplus y\)小於\(2^b\)的位數從全\(0\)取到全\(1\),從中選出\(m\)的倍數即可。

**

#include#define re register

#define ll long long

#define max(a,b) ((a)>(b)?(a):(b))

#define min(a,b) ((a)<(b)?(a):(b))

inline int read()

const int mod=998244353;

inline int dqm(int x)

inline int qm(int x)

ll l1,l2,r1,r2;int m,top[2];

struct sega[2][65];

inline ll getid(ll a,ll b)

inline ll solve(ll n,ll k)

for(re int i=1;i<=top[0];++i)

for(re int j=1;j<=top[1];++j)

return ans;

}int main()

牛客提高訓練營5B 旅遊

題目 吉老師的題時過一年還是不會做 從 1 號點出發經過每條邊至少一次並且還要回到 1 號點,這跟尤拉迴路的條件非常像,但是尤拉迴路的實際上是 經過每一條邊恰好一次並且回到出發點 所以可以理解為將每一條邊拆成多條邊,使得總邊權和最小,並且圖中存在一條尤拉迴路 而一張圖存在尤拉迴路的條件是不存在度數為...

牛客寒假訓練營5 F

題目傳送門 又到了開心的2小時過6題三小時卡一題的環節 太菜了 qwq 這一切一切的原因是什麼呢?ta這個小 zhi 機 zhang 靈 er 鬼 tong 把這句話看丟了 首 du 見 cuo 這道題的ta就很興奮的認為這不就是乙個組合數嘛 然後就寫了半天組合數 對dp的敏銳程度還不夠 寫組合數就...

牛客提高訓練營2B 分糖果

題目 發現自己一年之前非常垃圾 題目大意是給你乙個 n 個點的環,給每個點乙個 1,a i 的取值,並且滿足環上任意相連兩點權值不能相等,求方案數 考慮斷環為鏈,發現不大會 不妨考慮所有 a i 均相等的情況,設 m a i 對於第乙個點,有 m 種選擇,其後每乙個點的取值都不能和上乙個相等,即 m...