P5355-[Ynoi2017]由乃的玉米田【莫队,bitset,根号分治】

正题

题目链接:https://www.luogu.com.cn/problem/P5355
顺带一提的是P3674 小清新人渣的本愿是这题的弱化版,提交就可以A


题目大意

nnn个数字,询问

  1. 一个区间是否有两个数a,ba,ba,b使得a+b=xa+b=xa+b=x
  2. 一个区间是否有两个数a,ba,ba,b使得a−b=xa-b=xab=x
  3. 一个区间是否有两个数a,ba,ba,b使得a∗b=xa*b=xab=x
  4. 一个区间是否有两个数a,ba,ba,b使得a/b=xa/b=xa/b=x

aaabbb可以是同一个数。


解题思路

下面默认n,mn,mn,m同级
莫队的话修改是O(nn)O(n\sqrt n)O(nn)次的但是询问是O(n)O(n)O(n)次的所以询问处可以操作一波。

对于前两个操作,开两个bitsetbitsetbitsetb1xb1_xb1x表示是否有xxx这一个数,b2xb2_xb2x表示是否有N−xN-xNx这个数。
那么对于询问a+b=xa+b=xa+b=x就是询问(b1<<x)&b1(b1<<x)\& b1(b1<<x)&b1是否有值,询问a−b=xa-b=xab=x就是询问(b1<<(N−x))&b2(b1<<(N-x))\&b2(b1<<(Nx))&b2是否有值。上面的十分显然,并且bitsetbitsetbitset跑的也很快,可以通过。

然后询问a∗b=xa*b=xab=x的话我们可以直接枚举xxx的约数即可,这样是O(n)O(\sqrt n)O(n)

对于询问a/b=xa/b=xa/b=x的我们需要考虑根号分治,对于大于n\sqrt nn的我们就直接在莫队的时候枚举xxx的所有倍数。对于小于n\sqrt nn的因为只有n\sqrt nn个所以我们对于每个值可以O(n)O(n)O(n)搞。

假设目前为xxx,设resires_iresi表示以iii为右端点且有答案时最大的左端点位置,那么我们可以处理一个lastilast_ilasti表示上次iii出现的位置,然后没出用aia_iailastlastlast数组来更新resresres即可。


codecodecode

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<vector>
#include<bitset>
using namespace std;
const int N=1e5+10,T=300;
struct node{int op,l,r,x,id;
}q[N];
bitset<N> b1,b2;
int n,m,a[N],v[N],last[N],res[N];
bool ans[N];vector<int> qt[T+10];
bool cmp(node x,node y)
{return x.l/T==y.l/T?(x.r<y.r):(x.l<y.l);}
void add(int x){if(!v[x])b1[x]=1,b2[100000-x]=1;v[x]++;return;
}
void del(int x){if(v[x]==1)b1[x]=0,b2[100000-x]=0;v[x]--;return;
}
int main()
{scanf("%d%d",&n,&m);for(int i=1;i<=n;i++)scanf("%d",&a[i]);for(int i=1;i<=m;i++){q[i].id=i;scanf("%d%d%d%d",&q[i].op,&q[i].l,&q[i].r,&q[i].x);}sort(q+1,q+1+m,cmp);int l=1,r=0;for(int i=1;i<=m;i++){if(q[i].op==4&&q[i].x<=T){qt[q[i].x].push_back(i);continue;}while(l<q[i].l)del(a[l]),l++;while(l>q[i].l)l--,add(a[l]);while(r<q[i].r)r++,add(a[r]);while(r>q[i].r)del(a[r]),r--;int x=q[i].x;if(q[i].op==1)ans[q[i].id]=(b1&(b1<<x)).any();else if(q[i].op==2)ans[q[i].id]=((b1<<(100000-x))&b2).any();else if(q[i].op==3){for(int j=1;j*j<=x;j++)if(x%j==0&&v[j]&&v[x/j]){ans[q[i].id]=1;break;}}else{for(int j=1;j*x<=1e5;j++)if(v[j]&&v[j*x]){ans[q[i].id]=1;break;}}}for(int x=1;x<=T;x++){if(qt[x].empty())continue;memset(last,0,sizeof(last));for(int i=1;i<=n;i++){last[a[i]]=i;res[i]=res[i-1];if(x*a[i]<=1e5)res[i]=max(res[i],last[x*a[i]]);if(a[i]%x==0)res[i]=max(res[i],last[x/a[i]]);}for(int p=0;p<qt[x].size();p++){int i=qt[x][p];ans[q[i].id]=(q[i].l<=res[q[i].r]);}}for(int i=1;i<=m;i++)puts(ans[i]?"hana":"bi");return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/320101.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[XSY] 字符串题(字符串,构造)

字符串题 考虑找到一种方法&#xff0c;能够对一个 lyndon 串 A &#xff0c;直接求出 A 的下一个 lyndon 串。考虑不断复制 A &#xff0c;得 AAA…A因为 lyndon 串是自身循环移位得到的串中字典序严格最小的&#xff0c;所以 AAA…A 非lyndon 串。考虑微调&#xff1a;将 AA…

【DP】划分数列(ybtoj DP-2-1)

划分数列 ybtoj DP-2-1 题目大意 给你一个数列&#xff0c;让你划分出最少的段数&#xff0c;使每段要么单调不降&#xff0c;要么单调不增 输入样例#1 6 1 2 3 2 2 1 输出样例#1 2 输入样例#2 9 1 2 1 2 1 2 1 2 1 输出样例#2 5 输入样例#3 7 1 2 3 2 1 99999999…

Asp.net Core 2.1新功能Generic Host(通用主机)深度学习

什么是Generic Host ?这是在Asp.Net Core 2.1加入了一种新的Host&#xff0c;现在2.1版本的Asp.Net Core中&#xff0c;有了两种可用的Host。Web Host –适用于托管Web程序的Host,就是我们所熟悉的在Asp.Net Core应用程序的Mai函数中用CreateWebHostBuilder创建出来的常用的We…

牛客网【每日一题】5月19日题目精讲 比赛

链接&#xff1a; 文章目录题目描述题意题解&#xff1a;代码时间限制&#xff1a;C/C 1秒&#xff0c;其他语言2秒 空间限制&#xff1a;C/C 131072K&#xff0c;其他语言262144K 64bit IO Format: %lld题目描述 你在打比赛&#xff0c;这场比赛总共有12个题 对于第i个题&…

P3704-[SDOI2017]数字表格【莫比乌斯反演】

正题 题目链接:https://www.luogu.com.cn/problem/P3704 题目大意 TTT组询问&#xff0c;给出n,mn,mn,m求∏i1n∏j1mFbigcd(i,j)\prod_{i1}^n\prod_{j1}^mFbi_{gcd(i,j)}i1∏n​j1∏m​Fbigcd(i,j)​ 其中FbixFbi_xFbix​表示第xxx项斐波那契数列。 解题思路 答案就是∏x1nFb…

【贪心】奶牛晒衣服(ybtoj 贪心-1-1)

奶牛晒衣服 ybtoj 贪心-1-1 题目大意 有n件衣服&#xff0c;每件衣服有一个湿度&#xff0c;每一个单位时间所有衣服会湿度-a&#xff0c;同时可以选择一件衣服使其湿度-b&#xff0c;问最短在多久可以使所有衣服湿度小于等于0 输入样例 3 2 1 1 2 3输出样例 1数据范围 1…

[XSY] 树与图(树形DP、生成函数、分治NTT、重链剖分)

树与图 如果真的在图上跑算法&#xff0c;那么光建图复杂度就O(n2logn)O(n^2logn)O(n2logn)了&#xff0c;这显然不可行。所以一定要把 在图上的操作 转换成 在树上的操作 在图上删去点u&#xff0c;相当于在树上删去u到根节点的链&#xff0c;并把u的整棵子树删掉 如果我们枚举…

520 钻石争霸赛 题解

说好的钻石难度&#xff0c;结果本人菜的一地。。只有88分。。。。 文章目录7-1 考试周7-2 真的恭喜你7-3 平均成绩7-4 古风AB难度开始上升7-5 猜近似数字7-6 随机输一次7-7 阶乘的非零尾数7-8 三足鼎立前四题十分钟AC后两题二十分钟自闭第五题玄学卡点不知为何7-1 考试周 模拟…

.NET Core 跨平台物联网框架 ServerSuperIO.Core,一套设备驱动通吃嵌入式、上位机、云服务...

一、概述我们的大数据平台&#xff08;云&#xff09;平台的数据接收服务基于ServerSuperIO开发&#xff0c;因为集成的功能比较多&#xff0c;无法实现跨平台&#xff0c;现在跑在Windows下。但是云端体系化、标准化建设&#xff0c;跨平台是必走的技术路线。在ServerSuperIO基…

P3243-[HNOI2015]菜肴制作【拓扑排序,优先队列】

正题 题目链接:https://www.luogu.com.cn/problem/P3243 题目大意 nnn个数&#xff0c;有mmm个要求形如xxx在yyy的前面&#xff0c;现在要求在i−1i-1i−1尽量靠前的情况下iii尽量靠前(i>1)(i>1)(i>1) 求这个序列 解题思路 这个很显然要求是张有向图无环图&#xff…

【贪心】雷达装置(ybtoj 贪心-1-2)

雷达装置 ybtoj 贪心-1-2 题目大意 在平面直角坐标系中有n个点&#xff0c;现在让你在x轴上布置雷达&#xff0c;雷达可以的侦查半径为d&#xff0c;问你最少布置多少个雷达 输入样例 3 2 1 2 -3 1 2 1输出样例 2数据范围 1⩽n⩽1031\leqslant n \leqslant 10^31⩽n⩽103…

[XSY] 传统游戏(DP、容斥)

传统游戏 看到题&#xff0c;第一想法是设dp[k][s]dp[k][s]dp[k][s]表示选了kkk个数&#xff0c;当前异或和为sss的方案数&#xff0c;但这样产生一个问题&#xff1a;要如何保证所选的数不重复且无序呢&#xff1f;一种方法是修改状态&#xff1a;我们增设一维iii&#xff0c…

asp.net core添加全局异常处理及log4net、Nlog应用

一、介绍此篇文章将会介绍项目的全局异常收集以及采用log4net或者NLog记录。众所周知&#xff0c;一旦自己的项目报错&#xff0c;如果没有进行处理都是显示不友好的&#xff0c;有得甚至直接爆出错误页面&#xff0c;看的也是很奇怪。为了避免出现这样的错误以及在错误出现的时…

牛客网 【每日一题】5月20日题目 简单瞎搞题

比赛链接 文章目录题目描述题解&#xff1a;代码&#xff1a;题目描述 输入描述: 第一行一个数 n。 然后 n 行&#xff0c;每行两个数表示 li,ri。 输出描述: 输出一行一个数表示答案。 示例1 输入 5 1 2 2 3 3 4 4 5 5 6输出 26备注: 1 ≤ n , li , ri ≤ 100 题解&#xf…

P6688-可重集【字符串hash,线段树】

正题 题目链接:https://www.luogu.com.cn/problem/P6688 解题思路 nnn个数&#xff0c;每次有操作 修改一个数询问两个区间是否他们中的元素分别组成的可重集合A,BA,BA,B&#xff0c;满足对于每个AiBikA_iB_ikAi​Bi​k其中kkk是一个相同的数 解题思路 先不考虑kkk的问题 我…

【贪心】畜栏预定(ybtoj 贪心-1-3)

畜栏预定 ybtoj 贪心-1-3 题目大意 有n头牛&#xff0c;每头牛会在某一连续时间段吃草&#xff0c;问你同一时间最对有多少头牛&#xff0c;最后对于每一头牛给一个吃草的位置&#xff0c;使得同一时间内吃草的牛的位置不重合 输入样例 5 1 10 2 4 3 6 5 8 4 7输出样例 4…

ASP.NET Core 2.0利用MassTransit集成RabbitMQ

在ASP.NET Core上利用MassTransit来集成使用RabbitMQ真的很简单&#xff0c;代码也很简洁。近期因为项目需要&#xff0c;我便在这基础上再次进行了封装&#xff0c;抽成了公共方法&#xff0c;使得使用RabbitMQ的调用变得更方便简洁。那么&#xff0c;就让咱们来瞧瞧其魅力所在…

简单的数据结构题(多项式、拉格朗日插值、线段树)

简单的数据结构题 首先考虑计算要求的式子&#xff0c;不妨设l1,rnl1,rnl1,rn。 ∑i1naik∏j̸i1−aiajai−aj\sum_{i1}^{n}a_i^k\prod_{j\noti}\frac{1-a_ia_j}{a_i-a_j}∑i1n​aik​∏j​i​ai​−aj​1−ai​aj​​ ∑i1naik∏j̸i1ai−aj∏j̸i(1−aiaj)\sum_{i1}^{n}a_…

牛客网 【每日一题】5月21日题目 图的遍历

链接&#xff1a; 文章目录题目描述题解代码&#xff1a;时间限制&#xff1a;C/C 1秒&#xff0c;其他语言2秒 空间限制&#xff1a;C/C 32768K&#xff0c;其他语言65536K 64bit IO Format: %lld题目描述 小sun最近为了应付考试&#xff0c;正在复习图论&#xff0c;他现在学…

P4306-[JSOI2010]连通数【bitset】

正题 题目链接:https://www.luogu.com.cn/problem/P4306 题目大意 nnn个点的有向图&#xff0c;求图上可以相互到达点数。 解题思路 就是bitsetbitsetbitset这个黑科技的模板&#xff0c;首先是传递闭包 fi,jfi,k∣fk,jf_{i,j}f_{i,k}|f_{k,j}fi,j​fi,k​∣fk,j​也就是如果…