P3674 小清新人渣的本愿


一道妙不可言的题啊,,,

一看就知道是个莫队

考虑求答案

1号操作就是个大bitset,动态维护当前的bitset \(S\),把能取哪些值都搞出来,只要\(S\ and\ (S\ shr\ x)\)不为空,就有解

考虑2号操作,\(a+b=c\)可以转化为\((10w-b)-a=10w-c\),然后维护一个反的bitset,套路一样

3号操作。。。emmm。。。只需要暴力枚举因数,,,复杂度很对

  1. // It is made by XZZ
  2. #include<cstdio>
  3. #include<algorithm>
  4. #include<bitset>
  5. #include<cmath>
  6. #define il inline
  7. #define rg register
  8. #define vd void
  9. #define sta static
  10. typedef long long ll;
  11. using namespace std;
  12. il int gi(){
  13. rg int x=0,f=1;rg char ch=getchar();
  14. while(ch<'0'||ch>'9')f=ch=='-'?-1:f,ch=getchar();
  15. while(ch>='0'&&ch<='9')x=x*10+ch-'0',ch=getchar();
  16. return x*f;
  17. }
  18. const int maxn=100100;
  19. bitset<maxn>T,rT;
  20. int tot[maxn];
  21. int a[maxn];
  22. bool ans[maxn];
  23. int B[maxn];
  24. struct ques{int o,l,r,x,id;}q[maxn];
  25. bool operator <(const ques&a,const ques&b){
  26. if(B[a.l]!=B[b.l])return B[a.l]<B[b.l];
  27. return B[a.r]<B[b.r];
  28. }
  29. il vd fuck(int x,int y){
  30. if(tot[x]==0&&y==1)T[x]=1,rT[100000-x]=1;
  31. if(tot[x]==1&&y==-1)T[x]=0,rT[100000-x]=0;
  32. tot[x]+=y;
  33. }
  34. int main(){
  35. #ifdef xzz
  36. freopen("3674.in","r",stdin);
  37. freopen("3674.out","w",stdout);
  38. #endif
  39. int n=gi(),m=gi();
  40. for(rg int i=1;i<=n;++i)a[i]=gi();
  41. for(rg int i=1;i<=m;++i)q[i]=(ques){gi(),gi(),gi(),gi(),i};
  42. B[0]=sqrt(n);
  43. for(rg int i=1;i<=n;++i)B[i]=i/B[0];
  44. sort(q+1,q+m+1);
  45. int l=1,r=1;
  46. T[a[1]]=1;rT[100000-a[1]]=1;tot[a[1]]=1;
  47. for(rg int i=1;i<=m;++i){
  48. while(q[i].l<l)--l,fuck(a[l],1);
  49. while(q[i].r<r)fuck(a[r],-1),--r;
  50. while(q[i].r>r)++r,fuck(a[r],1);
  51. while(q[i].l>l)fuck(a[l],-1),++l;
  52. if(q[i].o==1)ans[q[i].id]=(T&(T>>(q[i].x))).any();
  53. else if(q[i].o==2)ans[q[i].id]=((T)&(rT>>(100000-q[i].x))).any();
  54. else if(q[i].o==3){
  55. if(q[i].x==0)ans[q[i].id]=(bool)T[0];
  56. else{
  57. int j=1;
  58. while(j*j<=q[i].x){
  59. if(q[i].x%j==0&&(tot[j])&&(tot[q[i].x/j])){ans[q[i].id]=1;break;}
  60. ++j;
  61. }
  62. }
  63. }
  64. }
  65. for(rg int i=1;i<=m;++i)puts(ans[i]?"hana":"bi");
  66. return 0;
  67. }

P3674 小清新人渣的本愿的更多相关文章

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  8. P3674 小清新人渣的本愿 莫队+bitset

    ennmm...bitset能过系列. 莫队+bitset \(\mathcal{O}(m\sqrt n + \frac{nm}{w})\) 维护一个正向的 bitset <N> mem ...

  9. LuoguP3674 小清新人渣的本愿 && BZOJ4810: [Ynoi2017]由乃的玉米田

    题目地址 小清新人渣的本愿 [Ynoi2017]由乃的玉米田 所以这两题也就输出不一样而已 题解 这种lxl的题还是没修改操作的题基本就是莫队 分开考虑每个询问 1.减法 \(a-b=x⇒a=b+x\ ...

随机推荐

  1. Linux 系统开机自启的配置文件

    程序开机启动的配置文件(/etc/rc.local) # 系统级别 ntsysv # 图形界面设置自启程序 chkconfig(/etc/init.d/sshd) 处理开机启动的文件 # 用户级别 # ...

  2. Mosquitto安装调试实录

    1. 安装 以Centos 7.x为例,先安装依赖项(笔者使用阿里云资源,部分依赖项可能未列出): yum install gcc-c++ yum install openssl-devel yum ...

  3. 铁乐学python_day10_作业

    1.继续整理函数相关知识点,写博客. 2.写函数,接收n个数字,求这些参数数字的和.(动态传参) def sum_n(*args): sum = 0 for i in args: sum += i r ...

  4. codeforces 741D Arpa’s letter-marked tree and Mehrdad’s Dokhtar-kosh paths(启发式合并)

    codeforces 741D Arpa's letter-marked tree and Mehrdad's Dokhtar-kosh paths 题意 给出一棵树,每条边上有一个字符,字符集大小只 ...

  5. BZOJ4891:[TJOI2017]龙舟(Pollard-Rho,exgcd)

    Description 加里敦大学有一个龙舟队,龙舟队有n支队伍,每只队伍有m个划手,龙舟比赛是一个集体项目,和每个人的能力息息相关,但由于龙舟讲究配合,所以评价队伍的能力的是一个值c = (b1*b ...

  6. logstash 匹配日志格式

    2017-05-15 12:06:17 INFO  me.cinyi.imapp.push.commons.iospush  - 用户ID[1000]-标识[11500], admin推送通知成功, ...

  7. python110道面试题

    1.一行代码实现1--100之和 利用sum()函数求和 2.如何在一个函数内部修改全局变量 利用global 修改全局变量 3.列出5个python标准库 os:提供了不少与操作系统相关联的函数 s ...

  8. python自动化之djangoform表单验证

    djangoforms表单验证 创建个类,继承于 forms.form obj = FM(request.post) obj.is_valid() 如果验证没有问题会返回true,否则会返回false ...

  9. Kafka设计解析(九)为何去掉replica.lag.max.messages参数

    转载自 huxihx,原文链接 Kafka副本管理—— 为何去掉replica.lag.max.messages参数 在Kafka设计解析(二)Kafka High Availability (上)文 ...

  10. [NOI2001]炮兵阵地 【状压DP】

    #\(\color{red}{\mathcal{Description}}\) \(Link\) 司令部的将军们打算在\(N \times M\)的网格地图上部署他们的炮兵部队.一个\(N \time ...