博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
BZOJ4810 Ynoi2017由乃的玉米田(莫队+bitset)
阅读量:4563 次
发布时间:2019-06-08

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

  多组询问不强制在线,那么考虑莫队。bitset维护当前区间出现了哪些数,数组记录每个数的出现次数以维护bitset。对于乘法,显然应有一个根号范围内的因子,暴力枚举即可。对于减法,a[i]-a[j]=x移项得a[i]-x=a[j],可以让bitset大力右移取and。对于加法,a[i]+a[j]=x移项得a[i]=x-a[j],维护一个翻转的bitset大力右移取and。

#include
#include
#include
#include
#include
#include
#include
using namespace std;#define ll long long#define N 100010char getc(){ char c=getchar();while ((c<'A'||c>'Z')&&(c<'a'||c>'z')&&(c<'0'||c>'9')) c=getchar();return c;}int gcd(int n,int m){ return m==0?n:gcd(m,n%m);}int read(){ int x=0,f=1;char c=getchar(); while (c<'0'||c>'9') { if (c=='-') f=-1;c=getchar();} while (c>='0'&&c<='9') x=(x<<1)+(x<<3)+(c^48),c=getchar(); return x*f;}bitset
f,g;int n,m,a[N],cnt[N];bool flag[N];struct data{ int op,l,r,x,k,i; bool operator <(const data&a) const { return k
a.r:r
q[i].r) if ((--cnt[a[r--]])==0) f[a[r+1]]=0,g[100000-a[r+1]]=0; while (l>q[i].l) if ((cnt[a[--l]]++)==0) f[a[l]]=1,g[100000-a[l]]=1; while (l
>q[i].x)).count(); else flag[q[i].i]=(f&(g>>100000-q[i].x)).count(); } for (int i=1;i<=m;i++) if (flag[i]) printf("yuno\n"); else printf("yumi\n"); return 0;}

 

转载于:https://www.cnblogs.com/Gloid/p/9985726.html

你可能感兴趣的文章
Sybase PowerDesigner 15.0 完美版+特别文件
查看>>
快速傅立叶之二
查看>>
cetos 6.3 安装 apache+mysql+php
查看>>
js编写简单的贪吃蛇游戏
查看>>
2018/12/01 一个64位操作系统的实现 第四章 导入kernel.bin(4)
查看>>
如何在windows xp professional安装iis的解决方法
查看>>
抽象类和接口
查看>>
使用ASP.NET Atlas AutoComplete Behavior或AutoComplete Extender实现自动完成功能(下)
查看>>
golang 常见疑惑总结
查看>>
8大你不得不知的Android调试工具
查看>>
pc端元素拖拽
查看>>
Sublime Text3使用Package Control 报错There Are No Packages Available For Installation
查看>>
判断连通图是否有环(并查集)
查看>>
汽车之家面试题2016
查看>>
POJ-数据结构-优先队列模板
查看>>
【HAOI2006】旅行(并查集暴力)
查看>>
css实现文本超出部分省略号显示
查看>>
留言板
查看>>
vue-router组件状态刷新消失的问题
查看>>
Android UI开发第十四篇——可以移动的悬浮框
查看>>