题目地址

小清新人渣的本愿
[Ynoi2017]由乃的玉米田
所以这两题也就输出不一样而已

题解

这种lxl的题还是没修改操作的题基本就是莫队

分开考虑每个询问

1.减法

\(a-b=x⇒a=b+x\)

用一个\(bitset\),第\(i\)位表示有没有\(i\)这个数

那么查询其实就等价于查询bit&(bit>>x)之后里面有没有1

\(a+b=x\)

2.加法

\(a+b=x\)

设\(p=n-b\)

\(a-p=a-n+b=x-n\)

维护一下另外一个\(bitset\),里面存的是\(n-i\)有没有出现过

查询直接查bit1&(bit2>>(n-x))里面有没有1就好

3.乘法

乘法不好维护

但是直接枚举因数也是可以的,在第一个bitset里面看成对的因数有没有出现过就好

#include <cstdio>
#include <algorithm>
#include <cstring>
#include <cmath>
#include <bitset>
using namespace std;inline 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 * 10 + c - '0'; c = getchar();}return x * f;
}#define N 100010bitset<N>s1;
bitset<N>s2;
int cnt[N];
int n, m, a[N];
int ans[N], block;
struct ques {int opt, l, r, x, id;
} q[N];bool cmp(ques a, ques b) {if(a.l / block == b.l / block) return a.r < b.r;else return a.l < b.l;
}void add(int x) {x = a[x];cnt[x]++;if(cnt[x] == 1) s1[x] = s2[n - x] = true;
}void dele(int x) {x = a[x];cnt[x]--;if(!cnt[x]) s1[x] = s2[n - x] = false;
}int main() {n = read(); m = read();for(int i = 1; i <= n; i ++) a[i] = read();block = n / sqrt(m);for(int i = 1; i <= m; i ++) {q[i] = (ques) {read(), read(), read(), read(), i};}sort(q + 1, q + m + 1, cmp);int l = 1, r = 0;for(int i = 1; i <= m; i ++) {int ql = q[i].l, qr = q[i].r, opt = q[i].opt, x = q[i].x;while(l < ql) dele(l++);while(l > ql) add(--l);while(r < qr) add(++r);while(r > qr) dele(r--);if(opt == 1) {ans[q[i].id] = (s1 & (s1 >> x)).any();}if(opt == 2) {ans[q[i].id] = (s1 & (s2 >> (n - x))).any();}if(opt == 3) {for(int k = 1; k * k <= x; k ++) {if(x % k == 0) {if(s1[k] && s1[x / k]) {ans[q[i].id] = 1;break;}}}}}for(int i = 1; i <= m; i ++) {puts(ans[i] ? "hana" : "bi");}return 0;
}

转载于:https://www.cnblogs.com/henry-1202/p/10201959.html

LuoguP3674 小清新人渣的本愿 BZOJ4810: [Ynoi2017]由乃的玉米田相关推荐

  1. [luoguP3674]小清新人渣的本愿

    题目大意 询问区间是否存在两个数和为x/差为x/积为x 这两个数可以使同一个数 bitset 不会bitset的蒟蒻哭了 维护bitset加和减就随便做了. 积就枚举较小数 上个莫队算法来维护我们需要 ...

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

    题目链接: P3674 小清新人渣的本愿 大致题意 给定一个长度为 n n n的序列, 有 m m m次询问操作. 1 l r x 表示询问 [ l , r ] [l, r] [l,r]是否存在 a ...

  3. 小清新人渣的本愿(莫队+bitset)

    小清新人渣的本愿 这两天写了些 b i t s e t bitset bitset的题,但都不想写题解...正巧这道题还结合了莫队,也是正在学习的,就记录一下吧. 题意: 给定一个 a a a数组,有 ...

  4. 洛谷-小清新人渣的本愿-(莫队+bitset)

    小清新人渣的本愿 题意: 就是给你一个数组,然后有3种查询,分别是问你l到r区间内,是否有两个数的差等于x,只和等于x,乘积为x. 思考: 其实看到,感觉就挺复杂的,没办法去找这种关系对,除了乘积为x ...

  5. 【luogu P3674】 小清新人渣的本愿

    题目 题目背景 本题时限3s,空间128MB 我感觉我要挂省选 人渣的本愿是一个有趣的番 可爱的花火喜欢从小和她谈♂笑♂风♂生的欧♂尼♂酱鸣海,欧尼酱特别想当老师,然后剧本安排当了花火的班主任. 然而 ...

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

    给你一个序列a,长度为n,有m次操作,每次询问一个区间是否可以选出两个数它们的差为x,或者询问一个区间是否可以选出两个数它们的和为x,或者询问一个区间是否可以选出两个数它们的乘积为x ,这三个操作分别 ...

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

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

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

    题目传送门 这道题是一道莫队题.对于每一种问法,就是查询对应的数是否在当前的区间内. 设$b[i]$表示莫队当前区间中有没有$i$这个数. 对于第一问"是否可以选出两个数它们的差为x&quo ...

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

    题目描述: 雾 题目分析: 介绍一种很牛的东西 bitset 相减出x只需要查询(a&(a< < x)).any()即可 +法 维护一个反的bitset即可 乘法枚举因数即可 O( ...

  10. 【洛谷 P3674】 小清新人渣的本愿(bitset,莫队)

    题目链接 因为每个数都是\(10^5\)以内,考虑直接用\(bitset\)维护. \(a-b=x\),其实就是看是否有\(p\)和\(p+x\)同时存在,直接\(bitset\)移位按位与一下就好了 ...

最新文章

  1. 推荐 15 款常用开发工具
  2. 更改c语言程序保存地址吗,C语言文本文件实现局部修改
  3. SystemCenter2012SP1实践(23)私有云的权限设计
  4. AUTOSAR从入门到精通100讲(十四)-一文详解CAN总线错误帧
  5. JAVA----数组(一)
  6. ArcGIS for Android Runtime100 基本操作(四)——GPS定位
  7. 基于FreeMarker+aspose的Word模板制作及打印
  8. Python自动化之操作PPT--更新模板数据,减少重复操作
  9. Transformer 真的很全能!谷歌用协同训练策略实现多个SOTA,单一ViT模型执行多模态多任务...
  10. Android文字转语音播报
  11. C# 生成word文件 小学一年级口算题生成器(代码)
  12. 梁宁:增长思维30讲脑图笔记
  13. 计算机中存储器的最小单位是什么意思,计算机内存储器的最小存储单位是什么...
  14. 第三方SDK接入--微信
  15. 基于计算机视觉的无人驾驶感知系统
  16. shapefile文件(shp)读取
  17. 计步器判断运动状态2
  18. 【数据挖掘】-模型的评估(四)
  19. 复旦大学演讲刷屏:我用尽了毕生的力气,只是抵达了生活的平凡
  20. Unity Shader 玻璃效果

热门文章

  1. 转载:cisco voip转码设置
  2. 电大计算机阅读英语作文,(2017年电大)电大英语作文整理20篇.doc
  3. 6.MongoDB之索引
  4. pcb天线设计和hfss仿真分析实例_5G天线与多天线系统设计
  5. oracle数据库考试答题,Oracle数据库试题
  6. 广度搜索 -- 9.2 Word Ladder -- 求具体的路径 -- 图解
  7. 三 Hibernate持久化状态主键生成策略
  8. windows中mysql5.7中配置中文字符集和默认datadir
  9. [转]vs2003,安装程序检测到另一个程序要求计算机重新启动
  10. 在VC中如何将float型转换成字符数组