P3674 小清新人渣的本願 莫隊 bitset

2021-09-24 23:41:54 字數 997 閱讀 9833

p3674 小清新人渣的本願

bitset<100005> now1,now2   一鍵了解bitset

now1每一位表示第i位是否存在,now2 表示 maxn-i位是否存在

1.差為x , now1左移 x 位和now1做按位與 存在乙個 1 則 存在

2.和為x   now1第 i 位存在,則值為 i 存在, 需要找 x - i 是否存在

如何表示 x - i ? 

i 存在,maxn - i 存在,則 (maxn - i) - (maxn - x) = x - i

故將 now2 右移 maxn - x 位 與 now1 做按位與運算存在 1 則存在

3.積為x , 列舉 x 因數判斷是否存在,複雜度o( sqrt(n) )

#include #define ll long long 

using namespace std;

const int maxn = 100005;//o(n*sqrt(n))

struct nq[maxn];

int ans[maxn],a[maxn],ans,unit;

int be[maxn];

bitsetnow1,now2; //每一位表示x是否存在

int num[maxn];//每一位的數量

int cmp(n c,n d)

}int main()

sort(q+1,q+m+1,cmp);

l = 1,r = 0;

for(int i=1;i<=m;i++)else ans[q[i].id] = 0;

break;

case 3:for(int j=1;j*j<=ans;j++)}}

break;

}} for(int i=1;i<=m;i++)

return 0;

}

P3674 小清新人渣的本願 莫隊 bitset

ennmm.bitset能過系列。莫隊 bitset mathcal m sqrt n frac 維護乙個正向的bitset mem,再維護乙個反向的bitset mem1,即mem1 n x mem x 對於 直接mem mem x 的兩個點 與 一下 對於 直接mem mem1 n x 因為原來...

洛谷P3674 小清新人渣的本願

題意 多次詢問,區間內是否存在兩個數,使得它們的和為x,差為x,積為x。n,m,v 100000 解 毒瘤bitset.假如我們有詢問區間的乙個桶,那麼我們就可以做到o n 列舉查詢了。然後我們用bitset優化一下.外面套上莫隊來維護桶。具體來說,差為x可以寫成 a b x 然後我們把bitset...

洛谷P3674 小清新人渣的本願

給定序列a,長度為n,有m次操作,opt表示該次操作型別,l,r表示操作的區間,x表示這次操作的x 選出的這兩個數可以是同乙個位置的數。定義c為每次的x和ai中的最大值,ai 0,每次的x 2。n,m,c 100000 前置技能 思路 對於此類離線的序列問題,想到莫隊演算法,時間複雜度為 o n s...