传送门

Solution

莫队,用bitset来存储出现的数

如果是和或者差,直接通过左移右移就可以实现判断

对于积的询问,暴力判就行了,因数只要枚举\(\sqrt n\)个

总复杂度是\(O(n^2/32)\),反正\(3s\)是可以过的咯

Code 

#include<bits/stdc++.h>
#define ll long long
#define max(a,b) ((a)>(b)?(a):(b))
#define min(a,b) ((a)<(b)?(a):(b))
inline int read()
{
int x=0,f=1;char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
while(ch>='0'&&ch<='9'){x=(x<<3)+(x<<1)+ch-'0';ch=getchar();}
return x*f;
}
#define MN 100005
#define N MN
int n,m,a[MN],T;
bool Ans[MN];
std::bitset<N> now,fnow;
struct ques{
int l,r,opt,x,id,pl;
bool operator <(const ques&o)const{return (pl^o.pl)?(pl<o.pl):(r<o.r);}
}q[MN];
int num[MN];
int main()
{
//freopen("testdata.in","r",stdin);
//freopen("testdata.out","w",stdout);
n=read();m=read();
register int i;T=ceil(sqrt((double)n));
for(i=1;i<=n;++i) a[i]=read();
now.reset();fnow.reset();
for(i=1;i<=m;++i)
{
q[i].opt=read(),q[i].l=read(),q[i].r=read();
q[i].x=read(),q[i].pl=(q[i].l-1)/T+1;q[i].id=i;
}
std::sort(q+1,q+m+1);
register int l=1,r=0,j;
for(i=1;i<=m;++i)
{
//printf("l=%d r=%d\n",q[i].l,q[i].r);
for(;r<q[i].r;++r) if(!num[a[r+1]]++) now[a[r+1]]=1,fnow[N-a[r+1]]=1;
for(;l>q[i].l;--l) if(!num[a[l-1]]++) now[a[l-1]]=1,fnow[N-a[l-1]]=1;
for(;r>q[i].r;--r) if(!(--num[a[r]])) now[a[r]]=0,fnow[N-a[r]]=0;
for(;l<q[i].l;++l) if(!(--num[a[l]])) now[a[l]]=0,fnow[N-a[l]]=0;
//std::cout<<now<<std::endl<<fnow<<std::endl;
if(q[i].opt==1) Ans[q[i].id]=(now&(now<<q[i].x)).any();
else if(q[i].opt==2) Ans[q[i].id]=((now<<(N-q[i].x))&fnow).any();
else
{
for(j=1;j*j<=q[i].x;j++)
if(q[i].x%j==0) if(now[j]&&now[q[i].x/j]){Ans[q[i].id]=1;break;}
}
}
for(i=1;i<=m;++i) puts(Ans[i]?"hana":"bi");
return 0;
}

Blog来自PaperCloud,未经允许,请勿转载,TKS!

最新文章

  1. web api :Action Results in Web API 2
  2. WinForm 窗体应用程序(初步)之一
  3. Node.js学习
  4. PHP如何通过SQL语句将数据写入MySQL数据库呢?
  5. Html5实践之EventSource
  6. Codeforces 85D Sum of Medians
  7. C(++)基于websocket实时通信的实现—GoEasy
  8. MySQL约束
  9. linux杂记(三)linux指令介绍
  10. UVA 10317 - Equating Equations (背包)
  11. 使用IDEA开发
  12. Vijos 1033 整数分解(版本2)
  13. sql声明变量,及if -else语句、while语句的用法
  14. python并发编程之IO阻塞基础知识点
  15. RocksDB系列二十二:RocksDB使用场景和特性
  16. JavaScript: Constructor and Object Oriented Programming
  17. 【12】python 栈型数据结构模拟、队列型数据结构模拟
  18. Java 常用对象-String类
  19. AspectJ的XML方式完成AOP的开发之切入点的表达式
  20. Spring入门学习笔记(1)

热门文章

  1. iOS - 外包开发常用第三方库(1)
  2. Scrapy 安装与使用
  3. Tomcat安装及环境配置
  4. 如何使用点击超链接的方式打开Android手机上的应用
  5. python之csv操作
  6. Android笔记(二十三) Android中的ProgressBar(进度条)
  7. java - day011 - 集合, ArrayList HashMap,HashSet, Iterator 接口, for-each 循环格式
  8. Yum三方仓库——RPMForge
  9. HTML&amp;CSS基础-ps的基本操作
  10. k8s的paas平台