题目地址 小清新人渣的本愿 [Ynoi2017]由乃的玉米田 所以这两题也就输出不一样而已 题解 这种lxl的题还是没修改操作的题基本就是莫队 分开考虑每个询问 1.减法 \(a-b=x⇒a=b+x\) 用一个\(bitset\),第\(i\)位表示有没有\(i\)这个数 那么查询其实就等价于查询bit&(bit>>x)之后里面有没有1 \(a+b=x\) 2.加法 \(a+b=x\) 设\(p=n-b\) \(a-p=a-n+b=x-n\) 维护一下另外一个\(bitset\),里面…
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…
[洛谷3674]小清新人渣的本愿(莫队,bitset) 题面 洛谷,自己去看去,太长了 题解 很显然的莫队. 但是怎么查询那几个询问. 对于询问乘积,显然可以暴力枚举因数(反正加起来也是\(O(n\sqrt{n})\)的 对于加减????暴力显然\(GG\) 所以我们来用\(bitset\)玄学优化一下... 然后就能\(AC\)了 时间复杂度? 大概是\(O(n^2/64)\)吧.. #include<iostream> #include<cstdio> #include<…
[Ynoi2017]由乃的玉米田 Time Limit: 30 Sec  Memory Limit: 256 MBSubmit: 917  Solved: 447[Submit][Status][Discuss] Description 由乃在自己的农田边散步,她突然发现田里的一排玉米非常的不美.这排玉米一共有N株,它们的高度参差不齐. 由乃认为玉米田不美,所以她决定出个数据结构题   这个题是这样的: 给你一个序列a,长度为n,有m次操作,每次询问一个区间是否可以选出两个数它们的差为x,或者询…
luogu 题意 给你一个序列a,长度为n,有m次操作,每次询问一个区间是否可以选出两个数它们的差为x,或者询问一个区间是否可以选出两个数它们的和为x,或者询问一个区间是否可以选出两个数它们的乘积为x ,这三个操作分别为操作1,2,3 选出的这两个数可以是同一个位置的数 所有数据\(\le 10^5\) sol 正好今天考试一道题要用到\(bitset\)就跑过来写一下. 所谓\(bitset\)其实就是一个不用手写的压位,一般用来优化暴力,复杂度\(O(\frac{n^2}{64})\)哈.(…
传送门 题意: 给你一个序列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…
Description 题库链接 给你一个序列 \(A\) ,长度为 \(n\) ,有 \(m\) 次操作,每次询问一个区间是否可以 选出两个数它们的差为 \(x\) : 选出两个数它们的和为 \(x\) : 选出两个数它们的乘积为 \(x\) . \(1\leq n,m,A_i\leq 100000\) Solution 前两个操作 \(bitset\) 可以解决:后一个操作直接暴力枚举因数单个询问 \(O(\sqrt n)\) .复杂度承受得起. Code #include <bits/st…
原题传送门 这题还算简单(我记得我刚学oi时就来写这题,然后暴力都爆零了) 看见无修改,那么这题应该是莫队 维护两个bitset,第二个是第一个的反串,bitset内维护每个数字是否出现过 第一种操作: 要求y-z=x,所以y=z+x 最后判断有没有k和k-x都出现在bitset中的情况 第二种操作: 和第一种类似的方法,就不再讲了qwqwq 第三种操作: 暴力把x分解成两个数的乘积,判断这两个数是否出现过 因为莫队是\(O(n \sqrt n)\)的,查询\(O(\frac{mN}{\omeg…
对于加减,用bitset维护当前每个数有没有 对于乘,暴力枚举约数 然后莫队 复杂度$O(m(\sqrt{n}+\frac{c}{64}))$ #include<bits/stdc++.h> #define pa pair<ll,ll> #define CLR(a,x) memset(a,x,sizeof(a)) #define MP make_pair using namespace std; typedef long long ll; ; inline char gc(){ r…
题意:多次询问,区间内是否存在两个数,使得它们的和为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)…