博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【题解】Luogu P3674 小清新人渣的本愿
阅读量:5279 次
发布时间:2019-06-14

本文共 2117 字,大约阅读时间需要 7 分钟。

这题还算简单(我记得我刚学oi时就来写这题,然后暴力都爆零了)

看见无修改,那么这题应该是

维护两个bitset,第二个是第一个的反串,bitset内维护每个数字是否出现过

第一种操作:

要求y-z=x,所以y=z+x

最后判断有没有k和k-x都出现在bitset中的情况

第二种操作:

和第一种类似的方法,就不再讲了qwqwq

第三种操作:

暴力把x分解成两个数的乘积,判断这两个数是否出现过

因为莫队是\(O(n \sqrt n)\)的,查询\(O(\frac{mN}{\omega})\)

#include 
#define N 100005#define getchar ncusing namespace std;inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; return p1==p2&&(p2=(p1=buf)+fread(buf,1,100000,stdin),p1==p2)?EOF:*p1++;}inline int read(){ register int x=0,f=1;register char ch=getchar(); while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();} while(ch>='0'&&ch<='9')x=(x<<3)+(x<<1)+ch-'0',ch=getchar(); return x*f;}inline void write(register int x){ if(!x)putchar('0');if(x<0)x=-x,putchar('-'); static int sta[20];register int tot=0; while(x)sta[tot++]=x%10,x/=10; while(tot)putchar(sta[--tot]+48);}struct query{ int k,l,r,x,id,bl;}q[N];inline bool cmp(register query a,register query b){ return a.bl!=b.bl?a.l
b.r);}int n,m,blocksize=0,v[N],sum[N],ans[N];bitset
dl1,dl2;inline void add(register int x){ if(++sum[v[x]]==1) dl1[v[x]]=1,dl2[N-v[x]]=1;}inline void del(register int x){ if(--sum[v[x]]==0) dl1[v[x]]=0,dl2[N-v[x]]=0;}int main(){ n=read(),m=read(); blocksize=sqrt(n); for(register int i=1;i<=n;++i) v[i]=read(); for(register int i=1;i<=m;++i) q[i].k=read(),q[i].l=read(),q[i].r=read(),q[i].x=read(),q[i].id=i,q[i].bl=(q[i].l-1)/blocksize+1; sort(q+1,q+1+m,cmp); int l=1,r=0; dl1.reset(),dl2.reset(); for(register int i=1;i<=m;++i) { int ll=q[i].l,rr=q[i].r; while(l>ll) add(--l); while(r
rr) del(r--); int k=q[i].k,x=q[i].x,id=q[i].id; if(k==1) { if((dl1&(dl1<
>(N-x))).any()) ans[id]=1; } else { for(register int j=1;j*j<=x;++j) if(!(x%j)) if(dl1[j]&&dl1[x/j]) { ans[id]=1; break; } } } for(register int i=1;i<=m;++i) puts(ans[i]?"hana":"bi"); return 0;}

转载于:https://www.cnblogs.com/yzhang-rp-inf/p/10357225.html

你可能感兴趣的文章
Http GetPost网络请求
查看>>
SWIFT国际资金清算系统
查看>>
Sping注解:注解和含义
查看>>
站立会议第四天
查看>>
如何快速掌握一门技术
查看>>
利用AMPScript获取Uber用户数据的访问权限
查看>>
vagrant 同时设置多个同步目录
查看>>
python接口自动化28-requests-html爬虫框架
查看>>
生成随机数的模板
查看>>
Mysql 数据库操作
查看>>
转:linux终端常用快捷键
查看>>
UVa 11059 最大乘积
查看>>
数组分割问题求两个子数组的和差值的小
查看>>
composer 报 zlib_decode(): data error
查看>>
hdu 3938 并查集
查看>>
《深入分析Java Web技术内幕》读书笔记之JVM内存管理
查看>>
python之GIL release (I/O open(file) socket time.sleep)
查看>>
软件开发与模型
查看>>
161017、SQL必备知识点
查看>>
kill新号专题
查看>>