传送门

毒瘤lxl

本质是莫队,关键是怎么处理询问

这里需要开两个bitset(记为\(b1,b2\)),分别存\(x\)和\(n-x\)是否出现

对于询问1,即\(x-y=z\),由于\(y=x-z\),所以要求\(x\)和\(x-z\)同时存在,相当于\(b1\&(b1<<z)\)是否有1,没有就是不存在这种情况

对于询问2,即\(x+y=z\),这里记\(w=n-y\),原式变为\(x+n-w=z\),即\(x-w=z-n\),和情况1类似,相当于要知道\(b1\&(b2>>(n-z))\)是否有1

询问3的话,\(O(\sqrt{n})\)大力枚举约数,判断是否存在即可

#include<bits/stdc++.h>
#define LL long long
#define il inline
#define re register using namespace std;
const int N=100000+10;
il int rd()
{
int x=0,w=1;char ch=0;
while(ch<'0'||ch>'9') {if(ch=='-') w=-1;ch=getchar();}
while(ch>='0'&&ch<='9') {x=(x<<3)+(x<<1)+(ch^48);ch=getchar();}
return x*w;
}
int n,m,q,sz,mm[N],a[N],b[N];
bitset<N> b1,b2;
bool an[N];
struct qu
{
int o,l,r,x,id;
bool operator < (const qu &bb) const {return mm[l]!=mm[bb.l]?mm[l]<mm[bb.l]:mm[r]<mm[bb.r];}
}qq[N]; int main()
{
n=rd(),q=rd();
sz=(int)sqrt(n);
for(int i=1;i<=n;++i) a[i]=rd(),mm[i]=i/sz;
for(int i=1;i<=q;++i) qq[i].o=rd(),qq[i].l=rd(),qq[i].r=rd(),qq[i].x=rd(),qq[i].id=i;
sort(qq+1,qq+q+1);
for(int i=1,l=1,r=0;i<=q;++i)
{
while(r<qq[i].r)
{
++r;
++b[a[r]];
if(b[a[r]]==1) b1[a[r]]=b2[n-a[r]]=1;
}
while(r>qq[i].r)
{
--b[a[r]];
if(b[a[r]]==0) b1[a[r]]=b2[n-a[r]]=0;
--r;
}
while(l<qq[i].l)
{
--b[a[l]];
if(b[a[l]]==0) b1[a[l]]=b2[n-a[l]]=0;
++l;
}
while(l>qq[i].l)
{
--l;
++b[a[l]];
if(b[a[l]]==1) b1[a[l]]=b2[n-a[l]]=1;
}
int x=qq[i].x;
if(qq[i].o==1) an[qq[i].id]=(b1&(b1<<x)).any();
else if(qq[i].o==2) an[qq[i].id]=(b1&(b2>>(n-x))).any();
else
{
for(int j=1;j*j<=x&&!an[qq[i].id];++j)
if(x%j==0) an[qq[i].id]=(b[j]>0&&b[x/j]>0);
}
}
for(int i=1;i<=q;i++) printf("%s\n",an[i]?"hana":"bi");
return 0;
}

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

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

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

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

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

  3. P3674 小清新人渣的本愿

    P3674 小清新人渣的本愿 一道妙不可言的题啊,,, 一看就知道是个莫队 考虑求答案 1号操作就是个大bitset,动态维护当前的bitset \(S\),把能取哪些值都搞出来,只要\(S\ and ...

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

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

  5. [Luogu 3674]小清新人渣的本愿

    Description 题库链接 给你一个序列 \(A\) ,长度为 \(n\) ,有 \(m\) 次操作,每次询问一个区间是否可以 选出两个数它们的差为 \(x\) : 选出两个数它们的和为 \(x ...

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

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

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

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

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

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

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

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

随机推荐

  1. Ajax 響應

    獲取服務器的響應內容,可以使用responseText或者responseXML屬性 responseText:獲取字符串形式的相應內容,除了XML的響應內容以外可用 responseXML:獲取XM ...

  2. Bootstrap导航

    前面的话 导航对于一位前端人员来说并不陌生.可以说导航是一个网站重要的元素组件之一,便于用户查找网站所提供的各项功能服务.本文将详细介绍Bootstrap导航 基础样式 Bootstrap框架中制作导 ...

  3. 利用caffe自带的Makefile编译自定义so文件

    1.文件目录结构 caffe-root |--include |--example |--modules |--test.h |--test.cpp |--python |--src |--tools ...

  4. codeforces3A

    Shortest path of the king CodeForces - 3A 棋盘上的国王被单独放置.尽管他是孤独的,但并未伤心,因为他有事关全局的重要性.例如,他必须正式访问方格 t .由于国 ...

  5. UVA11401-Triangle Counting-递推

    给出一个数字n,计算从1到n能组成几个不同的三角形. n的范围是10^6,大概就是递推吧.从F[i-1]到F[i]可以线性求出.要注意结果超出int. #include <cstdio> ...

  6. Hibernate基本应用01

    一. Hibernate简介 1.1 Hibernate介绍 Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全 ...

  7. Codeforces Round #417 (Div. 2) C. Sagheer and Nubian Market

    time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standa ...

  8. android第二课:运行你的应用

    如果你按照前面课程创建了 Android 项目,它包含了可以立即运行的 "Hello World"源代码文件. 由两该条件来决定如何运行你的应用:你是否拥有运行着 Android ...

  9. 洛谷 P1490 买蛋糕 解题报告

    P1490 买蛋糕 题目描述 野猫过生日,大家当然会送礼物了(咳咳,没送礼物的同志注意了哈!!),由于不知道送什么好,又考虑到实用性等其他问题,大家决定合伙给野猫买一个生日蛋糕.大家不知道最后要买的蛋 ...

  10. Android log 方法

    package test; public abstract class Logger { private static Class<? extends Logger> mLoggerCla ...