BZOJ 4810 [Ynoi2017]由乃的玉米田 (莫队 + bitset)
题目链接 BZOJ 4810
首先对询问离线, 莫队算法处理。
首先我们可以用bitset维护处当前区间中是否存在某个数。
对于询问1, 我们可以用 ((f >> q[i].x) & f).any()来回答当前的询问。
对于询问2, 我们用((g >> (S - q[i].x)) & f).any()回答当前询问。
其中g是f的反过来(g[i] = f[S - i])
对于询问3, 我们直接枚举x的因子即可(因为x <= 1e5)
#include <bits/stdc++.h> using namespace std; #define rep(i, a, b) for (int i(a); i <= (b); ++i)
#define dec(i, a, b) for (int i(a); i >= (b); --i) typedef long long LL; const int N = 1e5 + 10;
const int S = 1e5; int n, m, l, r, BS;
int belong[N], b[N], cnt[N], ans[N];
bitset <N> f, g; struct node{
int op, l, r, x, id;
friend bool operator < (const node &a, const node &b){
return belong[a.l] == belong[b.l] ? belong[a.r] < belong[b.r] : belong[a.l] < belong[b.l];
}
} q[N]; int main(){ scanf("%d%d", &n, &m); BS = (int)sqrt(n + 0.5); rep(i, 1, n) scanf("%d", b + i);
rep(i, 1, m){
int x, y, z, w;
scanf("%d%d%d%d", &x, &y, &z, &w);
q[i] = (node){x, y, z, w, i};
} rep(i, 1, n) belong[i] = (i - 1) / BS + 1;
sort(q + 1, q + m + 1); l = 0, r = 0;
rep(i, 1, m){
while (l > q[i].l){
--l;
++cnt[b[l]];
f[b[l]] = 1;
g[S - b[l]] = 1;
} while (r < q[i].r){
++r;
++cnt[b[r]];
f[b[r]] = 1;
g[S - b[r]] = 1;
} while (l < q[i].l){
--cnt[b[l]];
if (!cnt[b[l]]){
f[b[l]] = 0;
g[S - b[l]] = 0;
}
++l;
} while (r > q[i].r){
--cnt[b[r]];
if (!cnt[b[r]]){
f[b[r]] = 0;
g[S - b[r]] = 0;
}
--r;
} if (q[i].op == 1) ans[q[i].id] = ((f >> q[i].x) & f).any();
if (q[i].op == 2) ans[q[i].id] = ((g >> (S - q[i].x)) & f).any();
if (q[i].op == 3){
if (q[i].x == 0 && f[0]) ans[q[i].id] = 1;
else
for (int j = 1; j * j <= q[i].x; ++j) if (q[i].x % j == 0)
if (f[j] && f[q[i].x / j]){
ans[q[i].id] = 1;
break;
}
} } rep(i, 1, m) puts(ans[i] ? "yuno" : "yumi");
return 0;
}
BZOJ 4810 [Ynoi2017]由乃的玉米田 (莫队 + bitset)的更多相关文章
- BZOJ4810:[YNOI2017]由乃的玉米田(莫队,bitset)
Description 由乃在自己的农田边散步,她突然发现田里的一排玉米非常的不美.这排玉米一共有N株,它们的高度参差不齐. 由乃认为玉米田不美,所以她决定出个数据结构题 这个题是这样的: 给你一 ...
- bzoj4810 [Ynoi2017]由乃的玉米田 莫队+bitset(+数论)
题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=4810 题解 看数据范围和题目名字应该是根号算法. 因为询问除了区间外,还有第 \(3\) 个参 ...
- [BZOJ]4810: [Ynoi2017]由乃的玉米田
Time Limit: 30 Sec Memory Limit: 256 MB Description 由乃在自己的农田边散步,她突然发现田里的一排玉米非常的不美.这排玉米一共有N株,它们的高度参差 ...
- BZOJ 4810 [Ynoi2017]由乃的玉米田(莫队+bitset)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=4810 [题目大意] 给出一个数列,有三种区间查询, 分别查询区间是否存在两个数乘积为x ...
- 【bzoj4810】[Ynoi2017]由乃的玉米田 莫队算法+STL-bitset
题目描述 由乃在自己的农田边散步,她突然发现田里的一排玉米非常的不美.这排玉米一共有N株,它们的高度参差不齐. 由乃认为玉米田不美,所以她决定出个数据结构题 这个题是这样的: 给你一个序列a,长度为n ...
- BZOJ 4810 [Ynoi2017]由乃的玉米田 ——Bitset 莫队算法
加法和减法的操作都能想到Bitset. 然后发现乘法比较难办,反正复杂度已经是$O(n\log{n})$了 枚举因数也不能更差了,直接枚举就好了. #include <map> #incl ...
- 【BZOJ】 4810: [Ynoi2017]由乃的玉米田
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=4810 思路还是比较显然,第一反应应该就是莫队. 考虑怎么维护三个询问,想到了要维护每一个数 ...
- LuoguP3674 小清新人渣的本愿 && BZOJ4810: [Ynoi2017]由乃的玉米田
题目地址 小清新人渣的本愿 [Ynoi2017]由乃的玉米田 所以这两题也就输出不一样而已 题解 这种lxl的题还是没修改操作的题基本就是莫队 分开考虑每个询问 1.减法 \(a-b=x⇒a=b+x\ ...
- bzoj4810 [Ynoi2017]由乃的玉米田 bitset优化+暴力+莫队
[Ynoi2017]由乃的玉米田 Time Limit: 30 Sec Memory Limit: 256 MBSubmit: 917 Solved: 447[Submit][Status][Di ...
随机推荐
- HashMap允许将null用作键 也允许将null作为值
HashMap不能保证元素的顺序,HashMap能够将键设为null,也可以将值设为null. 与之对应的是Hashtable,(注意大小写:不是HashTable),Hashtable不能将键和值设 ...
- JS 绘制心形线
JS 绘制心形线 <!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> < ...
- 时间格式的处理和数据填充和分页---laravel
时间格式文档地址:http://carbon.nesbot.com/docs/ 这是些时间格式,只需要我们这么做就可以 我们在模板层,找到对应的模型对象那里进行处理就可以啦 2018-11-08 16 ...
- u-boot顶层目录config.mk分析
1. 设置obj与src ifneq ($(OBJTREE),$(SRCTREE)) ifeq ($(CURDIR),$(SRCTREE)) dir := else dir := $(subst $( ...
- LeetCode01--回文数
''' 判断一个整数是否是回文数.回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数. 示例 1: 输入: 121 输出: true 示例 2: 输入: -121 输出: false 解释: ...
- python基础学习笔记——os模块
#OS模块 #os模块就是对操作系统进行操作,使用该模块必须先导入模块: import os #getcwd() 获取当前工作目录(当前工作目录默认都是当前文件所在的文件夹) result = os. ...
- Cocoa-Cocoa对象
2.Cocoa对象 2.1 Objective-C是面向对象的语言 Objective-C和Java C++一样,有封装,继承,多态,重用.但是它不像C++那样有重载操作法.模版和多继承,也没有Jav ...
- strcat strcpy 源代码,用指针去实现
15. 指针实现 strcmp函数 • int newStrcpy(char *p, char *q) • { • while(*p ==*q) { ...
- 设置Putty 字体 颜色 全屏
效果 1. 字体 2.全屏 3. 颜色 Window->Colours->Default Foreground->Modify设置(我喜欢绿色设置:R:0 G:255 B:0) ...
- 【Luogu】P1854花店橱窗布置(DP)
照例良心题目链接 此题使用f[i][j]表示前i束花放进前j个花瓶的时候的最大值.转移方程如下 f[i][j]=max(f[i][j-1],f[i-1][j-1]+que[i][j]) 其中que[i ...