传送门

毒瘤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. PostgreSQL字段类型说明

    BIGSERIALSERIAL8 存储自动递增的惟一整数,最多 8 字节. BIT 固定长度的位串. BIT VARYING(n)VARBIT(n) 可变长度的位串,长度为 n 位. BOOLEAN  ...

  2. CSS全屏布局的6种方式

    前面的话 全屏布局在实际工作中是很常用的,比如管理系统.监控平台等.本文将介绍关于全屏布局的6种思路 float [1]float + calc 通过calc()函数计算出.middle元素的高度,并 ...

  3. codeforces437C

    The Child and Toy CodeForces - 437C On Children's Day, the child got a toy from Delayyy as a present ...

  4. 平衡树及笛卡尔树讲解(旋转treap,非旋转treap,splay,替罪羊树及可持久化)

    在刷了许多道平衡树的题之后,对平衡树有了较为深入的理解,在这里和大家分享一下,希望对大家学习平衡树能有帮助. 平衡树有好多种,比如treap,splay,红黑树,STL中的set.在这里只介绍几种常用 ...

  5. BZOJ1775[USACO 2009 Dec Gold 3.Video Game Troubles]——DP

    题目描述 输入 * 第1行: 两个由空格隔开的整数: N和V * 第2到第N+1行: 第i+1行表示第i种游戏平台的价格和可以在这种游戏平台上面运行的游 戏.包含: P_i, G_i还有G_i对由空格 ...

  6. SQL partition (小组排序)

    很多时候,我们在SQL中进行数据去重(distinct) 结果发现有2条一样ID,或者name的数据,我们想要最接近的那条数据. 直接看看题目: 原表 select ID,Title,PRICE fr ...

  7. day9 字符串格式化输出 % .format()

    常用的格式化输出方式1 % 方式 print("i am %s my hobby is %s" %("yt","eat")) 打印浮点数,. ...

  8. Sublime text3 插件LiveReload 实现实时预览

    1.首先要安装插件LiveReload Sublime text3. 菜单 preferences->packages control,输入install.. 回车,输入LiveReload回车 ...

  9. bzoj1001狼抓兔子

    1001: [BeiJing2006]狼抓兔子 现在小朋友们最喜欢的"喜羊羊与灰太狼",话说灰太狼抓羊不到,但抓兔子还是比较在行的, 而且现在的兔子还比较笨,它们只有两个窝,现在你 ...

  10. 洛谷CF868F Yet Another Minimization Problem(动态规划,决策单调性,分治)

    洛谷题目传送门 貌似做所有的DP题都要先搞出暴力式子,再往正解上靠... 设\(f_{i,j}\)为前\(i\)个数分\(j\)段的最小花费,\(w_{l,r}\)为\([l,r]\)全在一段的费用. ...