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] 代表 i , mem1[i] 代表 N-i,所以没有位移时对应位置 与 一下就是是否存在两个数加起来 \(= N\)

对于 \(\times\) 暴力枚举约数即可。

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<cstring>
#include<bitset>
#include<vector>
#define R register int
using namespace std;
namespace Luitaryi {
inline int g() { R x=0,f=1;
register char s; while(!isdigit(s=getchar())) f=s=='-'?-1:f;
do x=x*10+(s^48); while(isdigit(s=getchar())); return x*f;
} const int N=100005;
int n,m,B,mx,a[N],c[N],pos[N];
bool ans[N];
struct node { int op,l,r,x,id;
inline bool operator < (const node& that) const
{return pos[l]==pos[that.l]?(pos[l]&1)?r<that.r:r>that.r:l<that.l;}
}q[N];
bitset <N> mem,mem1;
inline void add(int x) {if(++c[x]==1) mem[x]=1,mem1[N-x]=1;}
inline void sub(int x) {if(--c[x]==0) mem[x]=0,mem1[N-x]=0;}
inline bool cadd(int x) {return (mem&(mem1>>N-x)).any();}
inline bool csub(int x) {return (mem&(mem<<x)).any();}
inline bool cmul(int x) {
for(R i=1;i*i<=x;++i) if(x%i==0&&mem[i]&&mem[x/i])
return true; return false;
}
inline void main() {
n=g(),m=g();
for(R i=1;i<=n;++i) a[i]=g(),mx=max(mx,a[i]);
for(R i=1,op,LL,RR,x;i<=m;++i)
op=g(),LL=g(),RR=g(),x=g(),q[i]=(node){op,LL,RR,x,i};
B=sqrt(n); for(R i=1;i<=m;++i) pos[i]=(i-1)/B+1;
sort(q+1,q+m+1);
for(R i=1,l=1,r=0,op,LL,RR,x,id;i<=m;++i) {
op=q[i].op,LL=q[i].l,RR=q[i].r,x=q[i].x,id=q[i].id;
while(l<LL) sub(a[l++]); while(l>LL) add(a[--l]);
while(r<RR) add(a[++r]); while(r>RR) sub(a[r--]);
if(op==1) ans[id]=csub(x);
if(op==2) ans[id]=cadd(x);
if(op==3) ans[id]=cmul(x);
} for(R i=1;i<=m;++i) puts(ans[i]?"hana":"bi");
}
} signed main() {Luitaryi::main(); return 0;}

2019.11.22

P3674 小清新人渣的本愿 莫队+bitset的更多相关文章

  1. 洛谷 P3674 小清新人渣的本愿 [莫队 bitset]

    传送门 题意: 给你一个序列a,长度为n,有Q次操作,每次询问一个区间是否可以选出两个数它们的差为x,或者询问一个区间是否可以选出两个数它们的和为x,或者询问一个区间是否可以选出两个数它们的乘积为x ...

  2. P3674 小清新人渣的本愿

    P3674 小清新人渣的本愿 一道妙不可言的题啊,,, 一看就知道是个莫队 考虑求答案 1号操作就是个大bitset,动态维护当前的bitset \(S\),把能取哪些值都搞出来,只要\(S\ and ...

  3. 洛谷P3674 小清新人渣的本愿(莫队)

    传送门 由乃tql…… 然后抄了一波zcy大佬的题解 我们考虑把询问给离线,用莫队做 然后用bitset维护,每一位代表每一个数字是否存在,记为$now1$ 然后再记录一个$now1$的反串$now2 ...

  4. luogu P3674 小清新人渣的本愿(莫队+bitset)

    这题是莫队维护bitset. 然而我并不会bitset以前讲过认为不考就没学 我真的太菜了. 首先维护一个权值的bitset--s. 操作3比较简单,我们可以\(\sqrt{x}\)枚举约数然后判断就 ...

  5. 【题解】Luogu P3674 小清新人渣的本愿

    原题传送门 这题还算简单(我记得我刚学oi时就来写这题,然后暴力都爆零了) 看见无修改,那么这题应该是莫队 维护两个bitset,第二个是第一个的反串,bitset内维护每个数字是否出现过 第一种操作 ...

  6. 洛谷P3674 小清新人渣的本愿

    题意:多次询问,区间内是否存在两个数,使得它们的和为x,差为x,积为x. n,m,V <= 100000 解: 毒瘤bitset...... 假如我们有询问区间的一个桶,那么我们就可以做到O(n ...

  7. luogu P3674 小清新人渣的本愿

    传送门 毒瘤lxl 本质是莫队,关键是怎么处理询问 这里需要开两个bitset(记为\(b1,b2\)),分别存\(x\)和\(n-x\)是否出现 对于询问1,即\(x-y=z\),由于\(y=x-z ...

  8. 洛谷 P3674 小清新人渣的本愿

    想看题目的戳我. 我刚开始觉得这道题目好难. 直到我从Awson大佬那儿了解到有一个叫做bitset的STL,这道题目就很容易被解开了. 想知道这个神奇的bitset的戳我. 这个题目一看就感觉是莫队 ...

  9. 【洛谷3674】小清新人渣的本愿(莫队,bitset)

    [洛谷3674]小清新人渣的本愿(莫队,bitset) 题面 洛谷,自己去看去,太长了 题解 很显然的莫队. 但是怎么查询那几个询问. 对于询问乘积,显然可以暴力枚举因数(反正加起来也是\(O(n\s ...

随机推荐

  1. python基础 — 局部变量/全局变量

    变量作用区域 变量器作用的额代码范围称为变量的作用与,不同作用区域之间互不影响,函数每部定义的变量一般为局部变量,而不属于任何函数的变量一般为全局变量.所以我们在这里按变量的作用区域分为两类,全局变量 ...

  2. 爬虫请求库之requests库

    一.介绍 介绍:使用requests可以模拟浏览器的请求,比之前的urllib库使用更加方便 注意:requests库发送请求将网页内容下载下来之后,并不会执行js代码,这需要我们自己分析目标站点然后 ...

  3. 视图集ViewSet

    一 .视图集ViewSet 使用视图集ViewSet,可以将一系列逻辑相关的动作放到一个类中: list() 提供一组数据 retrieve() 提供单个数据 create() 创建数据 update ...

  4. maven 打包错误 Cannot access central in offline mode

    出错的场景是这样的,先是在一台联网的linux机器上下载项目需要的包,linux机器上jdk为1.8 springboot1.5.然后将项目代码和.m2目录拷贝到一台windows机器上,window ...

  5. SpringBoot项目jar启动端口设置

    SpringBoot项目打包后,在target下生成的jar文件可以使用 Java - jar 直接启动,指定端口号配置 java -jar epjs-eureka.jar --server.port ...

  6. Geoserver 跨域设置

    1.下载跨域jar包jetty-servlets.jar(下载geoserver使用的对应jetty版本——可以查看<Geoserver>\lib下jetty-servlet.jar的版本 ...

  7. C++使用代码创建一个Windows桌面应用程序

    WinMain函数 Windows应用程序的唯一程序入口. 函数原型 int WINAPI WinMain { HINSTANCE hInstancem HINSTANCE hPreInstance, ...

  8. python-django框架中使用docker和elasticsearch配合实现搜索功能

    注意:系统环境为Ubuntu18 一.docker安装 0:如果之前有安装过docker使用以下命令卸载: sudo apt-get remove docker docker-engine docke ...

  9. flutter apk 打包

    https://blog.csdn.net/weixin_33738578/article/details/87998565 http://www.cnblogs.com/sangwl/p/10400 ...

  10. lnmp环境快速搭建及原理解析

    刚开始学习php的时候是在wamp环境下开发的,后来才接触到 lnmp 环境当时安装lnmp是按照一大长篇文档一步步的编译安装,当时是真不知道是在做什么啊!脑袋一片空白~~,只知道按照那么长的一篇文档 ...