题目链接  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)的更多相关文章

  1. BZOJ4810:[YNOI2017]由乃的玉米田(莫队,bitset)

    Description 由乃在自己的农田边散步,她突然发现田里的一排玉米非常的不美.这排玉米一共有N株,它们的高度参差不齐. 由乃认为玉米田不美,所以她决定出个数据结构题   这个题是这样的: 给你一 ...

  2. bzoj4810 [Ynoi2017]由乃的玉米田 莫队+bitset(+数论)

    题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=4810 题解 看数据范围和题目名字应该是根号算法. 因为询问除了区间外,还有第 \(3\) 个参 ...

  3. [BZOJ]4810: [Ynoi2017]由乃的玉米田

    Time Limit: 30 Sec  Memory Limit: 256 MB Description 由乃在自己的农田边散步,她突然发现田里的一排玉米非常的不美.这排玉米一共有N株,它们的高度参差 ...

  4. BZOJ 4810 [Ynoi2017]由乃的玉米田(莫队+bitset)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=4810 [题目大意] 给出一个数列,有三种区间查询, 分别查询区间是否存在两个数乘积为x ...

  5. 【bzoj4810】[Ynoi2017]由乃的玉米田 莫队算法+STL-bitset

    题目描述 由乃在自己的农田边散步,她突然发现田里的一排玉米非常的不美.这排玉米一共有N株,它们的高度参差不齐. 由乃认为玉米田不美,所以她决定出个数据结构题 这个题是这样的: 给你一个序列a,长度为n ...

  6. BZOJ 4810 [Ynoi2017]由乃的玉米田 ——Bitset 莫队算法

    加法和减法的操作都能想到Bitset. 然后发现乘法比较难办,反正复杂度已经是$O(n\log{n})$了 枚举因数也不能更差了,直接枚举就好了. #include <map> #incl ...

  7. 【BZOJ】 4810: [Ynoi2017]由乃的玉米田

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=4810 思路还是比较显然,第一反应应该就是莫队. 考虑怎么维护三个询问,想到了要维护每一个数 ...

  8. LuoguP3674 小清新人渣的本愿 && BZOJ4810: [Ynoi2017]由乃的玉米田

    题目地址 小清新人渣的本愿 [Ynoi2017]由乃的玉米田 所以这两题也就输出不一样而已 题解 这种lxl的题还是没修改操作的题基本就是莫队 分开考虑每个询问 1.减法 \(a-b=x⇒a=b+x\ ...

  9. bzoj4810 [Ynoi2017]由乃的玉米田 bitset优化+暴力+莫队

    [Ynoi2017]由乃的玉米田 Time Limit: 30 Sec  Memory Limit: 256 MBSubmit: 917  Solved: 447[Submit][Status][Di ...

随机推荐

  1. 8 Java 归并排序(MergerSort)

    图片素材与文字描述来自:尚硅谷-韩顺平数据结构与算法. 1.基本思想 归并排序是利用归并的思想实现的排序方法,该算法采用经典的分治(divide-and-conquer)策略(分治法将问题分(divi ...

  2. tomcat BIO 、NIO 、AIO

    11.11活动当天,服务器负载过大,导致部分页面出现了不可访问的状态.那后来主管就要求调优了,下面是tomcat bio.nio.apr模式以及后来自己测试的一些性能结果. 原理方面的资料都是从网上找 ...

  3. ios之alloc和init

      复制代码 SomeObject *obj = [[SomeObject alloc] initWithCenter:centerPoint radius:radius]; 和   复制代码 Som ...

  4. 【贪心 思维题】[USACO13MAR]扑克牌型Poker Hands

    看似区间数据结构的一道题 题目描述 Bessie and her friends are playing a unique version of poker involving a deck with ...

  5. Many-to-one

    创建模型 from django.db import models class Reporter(models.Model): first_name = models.CharField(max_le ...

  6. iOS UITextView点击事件处理

    自定义一个UITextView UITextView 的selectedRange 影响 selectedTextRange 改变前者可影响后者 self.selectedRange -->se ...

  7. Python中sys.argv的用法

    sys.argv是获取运行python文件的时候命令行参数 下面的代码文件是a.py,当我不用IDE工具,只用命令行窗口运行的时候,进入文件所在目录,输入:python a.py 输出结果如下 imp ...

  8. SQLServer数据库查看死锁、堵塞情况

    在压力测试过程中,不间断的按F5键执行上面的SQL语句,如果出现死锁或者堵塞现象,就会在执行结果中罗列出来.如果每次连续执行SQL,都有死锁或者堵塞出现,说明死锁或者堵塞的比较严重. --每秒死锁数量 ...

  9. spring cache redis

    一.使用开源包(spring-data-redis) 1.引入jar包 <dependency>      <groupId>org.springframework.data& ...

  10. 【LeetCode】Reverse Nodes in k-Group(k个一组翻转链表)

    这是LeetCode里的第25道题. 题目要求: 给出一个链表,每 k 个节点一组进行翻转,并返回翻转后的链表. k 是一个正整数,它的值小于或等于链表的长度.如果节点总数不是 k 的整数倍,那么将最 ...