BZOJ 4810 莫队+bitset
思路:
看完这道题根本没有思路啊....
然后我就膜拜了一波题解...
这神tm乱搞思路
维护两个bitset
第一个bitset代表当前区间哪些数出现过
第二个bitset是 maxp-p出现过
差为x的时候 就用第一个bitset与一下它右移x就好了
和为x的时候 就第一个bitset与一下第二个bitset右移maxp-x
乘积为x的时候 就枚举约数,, 暴力判断一下
复杂度是O(nsqrt(n)+n^2/32)的
//By SiriusRen
#include <cmath>
#include <bitset>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int N=,M=;
int n,m,a[N],Block,block[N],cnt[N],ans[N];
bitset<N>f,g;
struct Node{int op,l,r,x,id;}node[N];
bool cmp(Node a,Node b){
if(block[a.l]==block[b.l])return a.r<b.r;
return a.l<b.l;
}
int main(){
scanf("%d%d",&n,&m),Block=sqrt(n);
for(int i=;i<=n;i++)scanf("%d",&a[i]),block[i]=(i-)/Block+;
for(int i=;i<=m;i++)scanf("%d%d%d%d",&node[i].op,&node[i].l,&node[i].r,&node[i].x),node[i].id=i;
sort(node+,node++m,cmp);
for(int i=,l=,r=;i<=m;i++){
for(;r<node[i].r;r++)cnt[a[r+]]++,f.set(a[r+]),g.set(M-a[r+]);
for(;l>node[i].l;l--)cnt[a[l-]]++,f.set(a[l-]),g.set(M-a[l-]);
for(;l<node[i].l;l++){cnt[a[l]]--;if(!cnt[a[l]])f.reset(a[l]),g.reset(M-a[l]);}
for(;r>node[i].r;r--){cnt[a[r]]--;if(!cnt[a[r]])f.reset(a[r]),g.reset(M-a[r]);}
if(node[i].op==){if((f&(f>>node[i].x)).any())ans[node[i].id]=;}
else if(node[i].op==){if((f&(g>>(M-node[i].x))).any())ans[node[i].id]=;}
else{for(int j=;j*j<=node[i].x;j++)if(node[i].x%j==)
if(f[j]&&f[node[i].x/j]){ans[node[i].id]=;break;}
}
}for(int i=;i<=m;i++)puts(ans[i]?"yuno":"yumi");
}
BZOJ 4810 莫队+bitset的更多相关文章
- BZOJ 4939: [Ynoi2016]掉进兔子洞(莫队+bitset)
传送门 解题思路 刚开始想到了莫队+\(bitset\)去维护信息,结果发现空间不太够..试了各种奇技淫巧都\(MLE\),最后\(\%\)了发题解发现似乎可以分段做..这道题做法具体来说就是开\(3 ...
- P3674 小清新人渣的本愿 莫队+bitset
ennmm...bitset能过系列. 莫队+bitset \(\mathcal{O}(m\sqrt n + \frac{nm}{w})\) 维护一个正向的 bitset <N> mem ...
- YNOI2016:掉进兔子洞 (莫队+bitset)
YNOI2016:掉进兔子洞 题意简述: 有 m 个询问,每次询问三个区间,把三个区间中同时出现的数一个一个删掉,问最后三个区间剩下的数的个数和,询问独立. 注意这里删掉指的是一个一个删,不是把等于这 ...
- [Luogu 4688] [Ynoi2016]掉进兔子洞 (莫队+bitset)
[Luogu 4688] [Ynoi2016]掉进兔子洞 (莫队+bitset) 题面 一个长为 n 的序列 a.有 m 个询问,每次询问三个区间,把三个区间中同时出现的数一个一个删掉,问最后三个区间 ...
- BZOJ 4810 [Ynoi2017]由乃的玉米田 (莫队 + bitset)
题目链接 BZOJ 4810 首先对询问离线, 莫队算法处理. 首先我们可以用bitset维护处当前区间中是否存在某个数. 对于询问1, 我们可以用 ((f >> q[i].x) &am ...
- BZOJ 4810 [Ynoi2017]由乃的玉米田(莫队+bitset)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=4810 [题目大意] 给出一个数列,有三种区间查询, 分别查询区间是否存在两个数乘积为x ...
- BZOJ.4939.[Ynoi2016]掉进兔子洞(莫队 bitset 分组询问)
BZOJ 洛谷 删掉的数即三个区间数的并,想到bitset:查多个区间的数,想到莫队. 考虑bitset的每一位如何对应每个数的不同出现次数.只要离散化后不去重,每次记录time就可以了. 但是如果对 ...
- bzoj千题计划320:bzoj4939: [Ynoi2016]掉进兔子洞(莫队 + bitset)
https://www.lydsy.com/JudgeOnline/problem.php?id=4939 ans= r1-l1+1 + r2-l2+1 +r3-l3+1 - ∑ min(cnt1[i ...
- BZOJ 4939 [Ynoi2016]掉进兔子洞(莫队+bitset)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=4939 [题目大意] 给出一个数列,每个询问给出三个区间,问除去三个区间共有的数字外, ...
随机推荐
- 基于fpga的256m的SDRAM控制器
2018/7/26 受教于邓堪文老师,开始真真学习控制sdram 由于自己买的sdram模块是256的,原来老师的是128,所以边学边改,不知道最后好不好使,但是我有信心 一.sdram的初始化 sd ...
- SweetAlert弹出框
以前也用过,那个时候没有写过,突然看见了,就写上了. 网址:http://mishengqiang.com/sweetalert2/ swal({ title: '确定删除吗?', text: '你将 ...
- 1 JSONP
一.什么是跨域访问举个栗子:在A网站中,我们希望使用Ajax来获得B网站中的特定内容.如果A网站与B网站不在同一个域中,那么就出现了跨域访问问题.你可以理解为两个域名之间不能跨过域名来发送请求或者请求 ...
- Django-----中间件Cookie
Cookie: 用来跟踪用户的会话.常用的会话跟踪技术是Cookie与Session.Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端记录信息确定用户身份. Cookie机制 ...
- 小白神器 - Django - 起步
小白神器 - Django - 起步 一. Django下载 1. 命令行 pip install django==1.11.16 pip install django==1.11.16 -i ht ...
- 《零压力学Python》 之 第一章知识点归纳
第一章(初识Python)知识点归纳 Python是从ABC语言衍生而来的 ABC语言是Guido参与设计的一种教学语言,为非专业编程人员所开发的. Python是荷兰程序员 Guido Van Ro ...
- zookeeper概念与原理
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,它包含一个简单的原语集,分布式应用程序可以基于它实现同步服务,配置维护和命名服务等. 1 Zookeeper的基本概念 1.1 角色 ...
- 1393 0和1相等串 51nod
1393 0和1相等串 基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题 收藏 关注 给定一个0-1串,请找到一个尽可能长的子串,其中包含的0与1的个数相等. I ...
- N - Corporate Identity
Beside other services, ACM helps companies to clearly state their “corporate identity”, which includ ...
- MYSQL 字符集 MYSQL 源码
http://blog.csdn.net/maray/article/details/46504621