1. 程式人生 > >集訓Day5

集訓Day5

存在 .com 包含 相同 價值 範圍 轉換成 ima bubuko

生活還得繼續

bzoj3771

題面讓我笑了很長時間

給出 n個物品,價值為別為Xi且各不相同,現在可以取1個、2個或3個,問每種價值和有幾種情況?

*順序不同算一種

很傻逼的一個母函數+容斥,用A(x)表示每種取一個的母函數,B(x)表示每種取兩個,C(x)表示每種取三個

顯然所以對於每種物品價值Xi,A[xi]++,B[2*xi]++,C[3*xi]++

然後就是

技術分享圖片

然後就是FFT啦

bzoj1101

對於給定的整數a,b和d,有多少正整數對x,y,滿足x<=a,y<=b,並且gcd(x,y)=d

第一行包含一個正整數n,表示一共有n組詢問。(1<=n<= 50000)接下來n行,每行表示一個詢問,每行三個
正整數,分別為a,b,d。(1<=d<=a,b<=50000)

波蘭科技這麽發達的嗎

這麽早的一道莫反題。。。

草稿紙太亂 貼一個黃學長的吧

技術分享圖片

bzoj4571

看到xor上一個Trie樹

然後每一步轉移其實是用主席樹查找一個區間裏的數

同樣是按照數位一位一位的貪心,因為加了一個x,所以我們考慮對於所有的ai+x與b的按位異或。

假設我們已經處理到b的第i位(轉換成二進制),假設是1(0同理),

那麽我們只需要查找是否存在aj+x使得其二進制第i位數字是0,顯然我們已經處理了前i-1位了,設當前結果是ans,那麽我們需要查找的數的大小就是在區間[ans-x,ans+(1<<i)-1-x],手算一下就知道這個區間裏的數字的第i位加了x後就都是0,

那麽現在我們就是要在a[1]...a[n]中找出是否存在於[ans-x,ans+(1<<i)-1-x]的數字,兩個區間範圍限制,用主席樹模板一套就好了。

集訓Day5