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

最新文章

  1. Java开发中经典的小实例-(冒泡法)
  2. TEX学习笔记
  3. Android开发之AutoCompleteTextView的简单使用
  4. Mini ORM——PetaPoco笔记(转)
  5. centos6.6编译安装lnmp系列之mysql
  6. WPF 之 利用Visibility属性进行Item模板切换
  7. 转:堆(heap)和栈(stack)有什么区别??
  8. block的内部实现原理
  9. SQL连接操作
  10. C#中StreamReader读取中文时出现乱码问题总结
  11. 防止html页面缓存
  12. selenium的
  13. Nginx学习笔记(反向代理&amp;搭建集群)
  14. ElasticSearch权威指南学习(结构化查询)
  15. struts2_maven_learning
  16. KEIL5.25生成.bin文件步骤
  17. 解决git pull时出现的几个问题
  18. am335x u-boot2011.09 SPL 流程跟踪
  19. asp.net 伪静态实现(UrlRewritingNet)
  20. C语言 &#183; 芯片测试

热门文章

  1. Django-02-django的命令行工具
  2. Python-12-装饰器
  3. 【Centos】Centos7.5取消自动锁屏功能
  4. ansible-playbook的简单传参方式
  5. Java -- 最简单的认识重载
  6. SpringCloud——eureka集群
  7. 数据建模工具------EZMNL
  8. Dubbo学习摘录(一)
  9. MES系统之设备管理的基础功能
  10. NEST 字符串sort