P3674 小清新人渣的本愿


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

一看就知道是个莫队

考虑求答案

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

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

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

// It is made by XZZ
#include<cstdio>
#include<algorithm>
#include<bitset>
#include<cmath>
#define il inline
#define rg register
#define vd void
#define sta static
typedef long long ll;
using namespace std;
il int gi(){
rg int x=0,f=1;rg char ch=getchar();
while(ch<'0'||ch>'9')f=ch=='-'?-1:f,ch=getchar();
while(ch>='0'&&ch<='9')x=x*10+ch-'0',ch=getchar();
return x*f;
}
const int maxn=100100;
bitset<maxn>T,rT;
int tot[maxn];
int a[maxn];
bool ans[maxn];
int B[maxn];
struct ques{int o,l,r,x,id;}q[maxn];
bool operator <(const ques&a,const ques&b){
if(B[a.l]!=B[b.l])return B[a.l]<B[b.l];
return B[a.r]<B[b.r];
}
il vd fuck(int x,int y){
if(tot[x]==0&&y==1)T[x]=1,rT[100000-x]=1;
if(tot[x]==1&&y==-1)T[x]=0,rT[100000-x]=0;
tot[x]+=y;
}
int main(){
#ifdef xzz
freopen("3674.in","r",stdin);
freopen("3674.out","w",stdout);
#endif
int n=gi(),m=gi();
for(rg int i=1;i<=n;++i)a[i]=gi();
for(rg int i=1;i<=m;++i)q[i]=(ques){gi(),gi(),gi(),gi(),i};
B[0]=sqrt(n);
for(rg int i=1;i<=n;++i)B[i]=i/B[0];
sort(q+1,q+m+1);
int l=1,r=1;
T[a[1]]=1;rT[100000-a[1]]=1;tot[a[1]]=1;
for(rg int i=1;i<=m;++i){
while(q[i].l<l)--l,fuck(a[l],1);
while(q[i].r<r)fuck(a[r],-1),--r;
while(q[i].r>r)++r,fuck(a[r],1);
while(q[i].l>l)fuck(a[l],-1),++l;
if(q[i].o==1)ans[q[i].id]=(T&(T>>(q[i].x))).any();
else if(q[i].o==2)ans[q[i].id]=((T)&(rT>>(100000-q[i].x))).any();
else if(q[i].o==3){
if(q[i].x==0)ans[q[i].id]=(bool)T[0];
else{
int j=1;
while(j*j<=q[i].x){
if(q[i].x%j==0&&(tot[j])&&(tot[q[i].x/j])){ans[q[i].id]=1;break;}
++j;
}
}
}
}
for(rg int i=1;i<=m;++i)puts(ans[i]?"hana":"bi");
return 0;
}

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. [翻译] SIAlertView

    SIAlertView https://github.com/Sumi-Interactive/SIAlertView An UIAlertView replacement with block sy ...

  2. 修改UIView的默认Layer后,修改View的值会动态修改Layer的值

    修改UIView的默认Layer后,修改View的值会动态修改Layer的值 效果图: 如上图所示,当我们修改了一个UIView的子类中的Layer内置类型时(如上图中我们将CALayer直接替换成了 ...

  3. 将字典或者数组转换成JSON数据或者字符串

    将字典或者数组转换成JSON数据或者字符串 源码: NSDictionary+JSON.h 与 NSDictionary+JSON.m // // NSDictionary+JSON.h // Cat ...

  4. 11 个 Git 面试题

    源自:https://mp.weixin.qq.com/s/ghF27N0XjgG0pw2XpGDCYA 在今年的 Stack Overflow 开发者调查报告中,超过 70% 的开发者使用 Git, ...

  5. Centos7 apache2.4.29(httpd) 安装

    重点参考文章:https://blog.csdn.net/MrDing991124/article/details/78829184  写的很详细了,自己按着改博文走了不遍,不错! 一.配置安装环境 ...

  6. 1031. [JSOI2007]字符加密【后缀数组】

    Description 喜欢钻研问题的JS同学,最近又迷上了对加密方法的思考.一天,他突然想出了一种他认为是终极的加密办法 :把需要加密的信息排成一圈,显然,它们有很多种不同的读法.例如下图,可以读作 ...

  7. Burpsuite-Intruder基础学习(一)

    上周吧,将公司的短信及邮箱服务测试了一遍,就学习了Burpsuite的Intruder.(自学成才,还好网上有资料,入手还是挺简单的) 网上资料:https://www.gitbook.com/boo ...

  8. FFMpeg笔记(一) 使用FFmpeg将任意格式图片转换成任意格式图片

    void SrcToDest(char* pSrc, char* pDest,unsigned int nSrcWidth, unsigned int nSrcHeight, AVPixelForma ...

  9. css布局中关于 块状元素和行内元素的区分

    这两天在准备实习的面试和笔试,准备复习一下这些基础的概念,避免自己处于一种仅脑袋理解嘴巴不能表述出来的状态. 块状元素和行内元素的概念是在css页面布局这个地方出现.主要是将html标签按照一定的特性 ...

  10. block本质探寻六之修改变量

    说明: <1>阅读本文章,请参照前面的block文章加以理解: <2>本文的变量指的是auto类型的局部变量(包括实例对象): <3>ARC和MRC两种模式均适用: ...