想看题目的我。

我刚开始觉得这道题目好难。

直到我从Awson大佬那儿了解到有一个叫做bitset的STL,这道题目就很容易被解开了。

想知道这个神奇的bitset的我。

这个题目一看就感觉是莫队,其实是别人告诉我的,分块不太好弄。

减法:$$a-b=x => a=x+b$$就是在权值数组上右移x位。

加法同理。

至于乘法,直接暴力找因子,反正是\(\sqrt{n}\)复杂度。

时间复杂度显然是:\(O(\)能过\()\)


code:

#include <bits/stdc++.h>
using namespace std; const int N=100010;
struct ask {
int opt,l,r,x,ans,id,ord;
}q[N];
bitset <N> S1,S2;
int n,m,a[N],L=1,R,len,cnt[N]; bool cmp1(ask s,ask t)
{
return s.id==t.id?s.r<t.r:s.id<t.id;
} bool cmp2(ask s,ask t)
{
return s.ord<t.ord;
} void del(int i)
{
if (!--cnt[i]) S1[i]=S2[N-i]=0;
} void ins(int i)
{
if (!cnt[i]++) S1[i]=S2[N-i]=1;
} void Mo(int i)
{
while (L<q[i].l) del(a[L++]);
while (L>q[i].l) ins(a[--L]);
while (R<q[i].r) ins(a[++R]);
while (R>q[i].r) del(a[R--]);
if (q[i].opt==1) q[i].ans=(S1>>q[i].x&S1).any();
if (q[i].opt==2) q[i].ans=(S2>>(N-q[i].x)&S1).any();
if (q[i].opt==3) {
for (int j=1;j*j<=q[i].x;j++)
if (q[i].x%j==0&&S1[j]&&S1[q[i].x/j]) {
q[i].ans=1;break;
}
}
} int main()
{
ios::sync_with_stdio(false);
cin>>n>>m;
len=sqrt(n);
for (int i=1;i<=n;i++) cin>>a[i];
for (int i=1;i<=m;i++) {
cin>>q[i].opt>>q[i].l>>q[i].r>>q[i].x;
q[i].id=q[i].l/len;q[i].ord=i;
}
sort(q+1,q+1+m,cmp1);
for (int i=1;i<=m;i++) Mo(i);
sort(q+1,q+1+m,cmp2);
for (int i=1;i<=m;i++)
q[i].ans?puts("hana"):puts("bi");
return 0;
}

bitset大法好!

最新文章

  1. sqlserver 多库查询 sp_addlinkedserver使用方法(添加链接服务器)
  2. app里使用163邮箱发送邮件,被163认为是垃圾邮件的坑爹经历!_ !
  3. 【Python】列表各种操作
  4. SetTimer 与 回调函数
  5. Highchart使用json格式数据lineDemo
  6. 营业额统计(bzoj1588)
  7. Linux文件操作 笔记
  8. QAction QActionGroup QMenu 使用方法
  9. 关于ExpandableListView用法的一个简单小例子
  10. hibernate中文乱码问题
  11. c创建win窗口
  12. 一种C# TCP异步编程中遇到的问题
  13. [Python]Unicode转ascii码的一个好方法
  14. dom小总结
  15. gulp静态资源构建、压缩、版本号添加
  16. 使用Visual Studio 2017开发python,并在iis上部署Python Django
  17. Pytoch机器学习乱玩(一):数学建模作业,体重与心率
  18. Unity 三角函数 向量 运算
  19. 用sitemap做主页的菜单栏
  20. window 上安装 Scala

热门文章

  1. Some perl tips
  2. Android官方SwipeRefreshLayout
  3. win10 microsoft edge 浏览器收藏夹位置
  4. Python GUI之tkinter窗口视窗教程大集合(看这篇就够了) JAVA日志的前世今生 .NET MVC采用SignalR更新在线用户数 C#多线程编程系列(五)- 使用任务并行库 C#多线程编程系列(三)- 线程同步 C#多线程编程系列(二)- 线程基础 C#多线程编程系列(一)- 简介
  5. ZAP介绍
  6. [C++设计模式] singleton 单例模式
  7. GLSL经典新手教程汇总
  8. OrCAD16.6中对比两份DSN文件的方法
  9. SpringCloud系列五:为Eureka Server添加用户认证及元数据
  10. inotify+rsync