加法和减法的操作都能想到Bitset. 然后发现乘法比较难办,反正复杂度已经是$O(n\log{n})$了 枚举因数也不能更差了,直接枚举就好了. #include <map> #include <ctime> #include <cmath> #include <queue> #include <bitset> #include <cstdio> #include <cstring> #include <iostr…
题目链接  BZOJ 4810 首先对询问离线, 莫队算法处理. 首先我们可以用bitset维护处当前区间中是否存在某个数. 对于询问1, 我们可以用 ((f >> q[i].x) & f).any()来回答当前的询问. 对于询问2, 我们用((g >> (S - q[i].x)) & f).any()回答当前询问. 其中g是f的反过来(g[i] = f[S - i]) 对于询问3, 我们直接枚举x的因子即可(因为x <= 1e5) #include <…
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=4810 [题目大意] 给出一个数列,有三种区间查询, 分别查询区间是否存在两个数乘积为x,是否存在两个数和为x,以及是否存在两个数差为x, [题解] 我们对于询问进行莫队处理,保存当前区间的权值数组,记为F, 同时保存权值数组的反向数组G 那么存在差为x的情况只要存在一组F[i]&F[i-x]=1即可 存在和为x的情况只要存在一组F[i]&G[M-x+i]即可. 对于乘积为x的情…
[BZOJ4810][Ynoi2017]由乃的玉米田 Description 由乃在自己的农田边散步,她突然发现田里的一排玉米非常的不美.这排玉米一共有N株,它们的高度参差不齐.由乃认为玉米田不美,所以她决定出个数据结构题 这个题是这样的: 给你一个序列a,长度为n,有m次操作,每次询问一个区间是否可以选出两个数它们的差为x,或者询问一个区间是否可以选出两个数它们的和为x,或者询问一个区间是否可以选出两个数它们的乘积为x ,这三个操作分别为操作1,2,3选出的这两个数可以是同一个位置的数 Inp…
由乃在自己的农田边散步,她突然发现田里的一排玉米非常的不美.这排玉米一共有N株,它们的高度参差不齐. 由乃认为玉米田不美,所以她决定出个数据结构题   这个题是这样的: 给你一个序列a,长度为n,有m次操作,每次询问一个区间是否可以选出两个数它们的差为x,或者询问一个区间是 否可以选出两个数它们的和为x,或者询问一个区间是否可以选出两个数它们的乘积为x ,这三个操作分别为操作1 ,2,3选出的这两个数可以是同一个位置的数 Input 第一行两个数n,m 后面一行n个数表示ai 后面m行每行四个数…
Time Limit: 30 Sec  Memory Limit: 256 MB Description 由乃在自己的农田边散步,她突然发现田里的一排玉米非常的不美.这排玉米一共有N株,它们的高度参差不齐. 由乃认为玉米田不美,所以她决定出个数据结构题   这个题是这样的: 给你一个序列a,长度为n,有m次操作,每次询问一个区间是否可以选出两个数它们的差为x,或者询问一个区间是否可以选出两个数它们的和为x,或者询问一个区间是否可以选出两个数它们的乘积为x ,这三个操作分别为操作1,2,3选出的这…
多组询问不强制在线,那么考虑莫队.bitset维护当前区间出现了哪些数,数组记录每个数的出现次数以维护bitset.对于乘法,显然应有一个根号范围内的因子,暴力枚举即可.对于减法,a[i]-a[j]=x移项得a[i]-x=a[j],可以让bitset大力右移取and.对于加法,a[i]+a[j]=x移项得a[i]=x-a[j],维护一个翻转的bitset大力右移取and. #include<iostream> #include<cstdio> #include<cmath&g…
点此看题面 大致题意: 给你一段序列,每次询问一段区间内是否存在两个数的差或和或积为\(x\). 莫队算法 看到区间询问+可以离线,首先想到了莫队啊. 但是,在较短的时间内更新信息依然比较难以实现. 于是,我们就要考虑用\(bitset\)了. 关于\(bitset\) 这应该是我第一次使用\(bitset\)吧,所以简单介绍一下它的使用方式. 其作用就相当于存储一个特别大的二进制数.可以把它看成一个\(bool\)数组来使用. 它的好处就在于,它可以直接进行\(\&,|,\text{^},<…
[Ynoi2017]由乃的玉米田 Time Limit: 30 Sec  Memory Limit: 256 MBSubmit: 917  Solved: 447[Submit][Status][Discuss] Description 由乃在自己的农田边散步,她突然发现田里的一排玉米非常的不美.这排玉米一共有N株,它们的高度参差不齐. 由乃认为玉米田不美,所以她决定出个数据结构题   这个题是这样的: 给你一个序列a,长度为n,有m次操作,每次询问一个区间是否可以选出两个数它们的差为x,或者询…
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=4810 思路还是比较显然,第一反应应该就是莫队. 考虑怎么维护三个询问,想到了要维护每一个数字是否出现就想到了要用bitset.那么这道题就做完了. 莫队相当于是在利用bitset维护一个01序列$f$,表示每一个数字是否出现在这一段区间. 1.如果差为$x$,将这个$f$左移$x$然后判断是否和原来的$f$集合有交集即可. 2.如果和为$x$,将这个$f$翻转并左移$100000-x$然…