ennmm...bitset能过系列. 莫队+bitset \(\mathcal{O}(m\sqrt n + \frac{nm}{w})\) 维护一个正向的 bitset <N> mem ,再维护一个反向的 bitset <N> mem1,即 mem1[N-x]=mem[x]; 对于 \(-\) 直接 mem&mem<<x 就是相差 \(x\) 的两个点 与 一下 对于 \(+\) 直接 mem&mem1<<(N-x) 因为原来 mem[i]…
传送门 题意: 给你一个序列a,长度为n,有Q次操作,每次询问一个区间是否可以选出两个数它们的差为x,或者询问一个区间是否可以选出两个数它们的和为x,或者询问一个区间是否可以选出两个数它们的乘积为x ,这三个操作分别为操作1,2,3 题面太强啦!!! 感觉就是莫队,想了一下分块不好搞更坚定了莫队的信念 $a-b=x$,$a=x+b$,放在权值数组上就是b右移x位,$bitset$大法好 加法同理 乘法,总共就$\sqrt{N}$个约数.... 感觉复杂度$O(\frac{N^2}{64} + N…
这题是莫队维护bitset. 然而我并不会bitset以前讲过认为不考就没学 我真的太菜了. 首先维护一个权值的bitset--s. 操作3比较简单,我们可以\(\sqrt{x}\)枚举约数然后判断就行了. 操作1就是求是否存在 \[\exists{a,b},a-b=x\] 移一下项 \[a=x+b\] 也就是\(\text{(s<<x)}\)&\(x\neq0\). 那么操作2该怎么办? 我们先设\(b'=n-b\)因为\(x=a+b\) \[a-b'=a-(n-b)=a+b-n=x…
原题传送门 这题还算简单(我记得我刚学oi时就来写这题,然后暴力都爆零了) 看见无修改,那么这题应该是莫队 维护两个bitset,第二个是第一个的反串,bitset内维护每个数字是否出现过 第一种操作: 要求y-z=x,所以y=z+x 最后判断有没有k和k-x都出现在bitset中的情况 第二种操作: 和第一种类似的方法,就不再讲了qwqwq 第三种操作: 暴力把x分解成两个数的乘积,判断这两个数是否出现过 因为莫队是\(O(n \sqrt n)\)的,查询\(O(\frac{mN}{\omeg…
传送门 毒瘤lxl 本质是莫队,关键是怎么处理询问 这里需要开两个bitset(记为\(b1,b2\)),分别存\(x\)和\(n-x\)是否出现 对于询问1,即\(x-y=z\),由于\(y=x-z\),所以要求\(x\)和\(x-z\)同时存在,相当于\(b1\&(b1<<z)\)是否有1,没有就是不存在这种情况 对于询问2,即\(x+y=z\),这里记\(w=n-y\),原式变为\(x+n-w=z\),即\(x-w=z-n\),和情况1类似,相当于要知道\(b1\&(b2…
P3674 小清新人渣的本愿 一道妙不可言的题啊,,, 一看就知道是个莫队 考虑求答案 1号操作就是个大bitset,动态维护当前的bitset \(S\),把能取哪些值都搞出来,只要\(S\ and\ (S\ shr\ x)\)不为空,就有解 考虑2号操作,\(a+b=c\)可以转化为\((10w-b)-a=10w-c\),然后维护一个反的bitset,套路一样 3号操作...emmm...只需要暴力枚举因数,,,复杂度很对 // It is made by XZZ #include<cstd…
传送门 由乃tql…… 然后抄了一波zcy大佬的题解 我们考虑把询问给离线,用莫队做 然后用bitset维护,每一位代表每一个数字是否存在,记为$now1$ 然后再记录一个$now1$的反串$now2$(就是每一位代表的是$N-x$),干吗用等下说 1操作的话,因为每一个位置代表一个数字,如果存在$z-y=x$,可以转化为同时存在$z$和$z-x$,那么把$now1$左移$x$位并与$now1$做$\&$运算,看看是否等于$0$,如果不是说明不存在 2操作的话,$now2$中的$y'$代表数字$…
题意:多次询问,区间内是否存在两个数,使得它们的和为x,差为x,积为x. n,m,V <= 100000 解: 毒瘤bitset...... 假如我们有询问区间的一个桶,那么我们就可以做到O(n)枚举查找了. 然后我们用bitset优化一下......外面套上莫队来维护桶. 具体来说,差为x可以写成 a - b = x 然后我们把bitset左移/右移x位,与原来的and一下,看是否有元素为1即可. 和为x可以写成 a + b = x   N - a - b = N - x   (N - a)…
想看题目的戳我. 我刚开始觉得这道题目好难. 直到我从Awson大佬那儿了解到有一个叫做bitset的STL,这道题目就很容易被解开了. 想知道这个神奇的bitset的戳我. 这个题目一看就感觉是莫队,其实是别人告诉我的,分块不太好弄. 减法:\[a-b=x => a=x+b\]就是在权值数组上右移x位. 加法同理. 至于乘法,直接暴力找因子,反正是\(\sqrt{n}\)复杂度. 时间复杂度显然是:\(O(\)能过\()\) code: #include <bits/stdc++.h>…
Description 题库链接 给你一个序列 \(A\) ,长度为 \(n\) ,有 \(m\) 次操作,每次询问一个区间是否可以 选出两个数它们的差为 \(x\) : 选出两个数它们的和为 \(x\) : 选出两个数它们的乘积为 \(x\) . \(1\leq n,m,A_i\leq 100000\) Solution 前两个操作 \(bitset\) 可以解决:后一个操作直接暴力枚举因数单个询问 \(O(\sqrt n)\) .复杂度承受得起. Code #include <bits/st…