没有除法的版本

弱化版Blog

题目


分析

只针对除法而言,如果商很大直接用bitset判断是否存在,

否则直接预处理最近的答案判断是否在区间内即可,注意0要特判


代码

#include <cstdio>
#include <cctype>
#include <bitset>
#include <algorithm>
#define rr register
using namespace std;
const int N=100011,base=316; bitset<N>uk,ku;
struct five{int opt,l,r,x,rk,Is;}q[N];
int kuai[N],Sqrt[N],a[N],ans[N],m,n,Q,CNT[N],last[N],mx[N];
inline signed iut(){
rr int ans=0; rr char c=getchar();
while (!isdigit(c)) c=getchar();
while (isdigit(c)) ans=(ans<<3)+(ans<<1)+(c^48),c=getchar();
return ans;
}
bool cmp(five a,five b){
if (a.Is&&b.Is) return a.x>b.x;
if (a.Is||b.Is) return b.Is;
if (kuai[a.l]^kuai[b.l]) return a.l<b.l;
if (kuai[a.r]^kuai[b.r]) return kuai[a.l]&1?a.r<b.r:a.r>b.r;
return (kuai[a.l]^kuai[a.r])&1?a.x<b.x:a.x>b.x;
}
inline signed max(int a,int b){return a>b?a:b;}
inline void add(int now){if (++CNT[now]==1) uk[now]=ku[N-now-1]=1;}
inline void del(int now){if (--CNT[now]==0) uk[now]=ku[N-now-1]=0;}
signed main(){
n=iut(); Q=iut();
for (rr int i=1;i<=base;++i) Sqrt[i*i]=i;
for (rr int i=1;i<N;++i) if (!Sqrt[i]) Sqrt[i]=Sqrt[i-1];
for (rr int i=1;i<=n;++i) a[i]=iut(),kuai[i]=(i-1)/base+1;
for (rr int i=1;i<=Q;++i) q[i]=(five){iut(),iut(),iut(),iut(),i,0},q[i].Is=q[i].opt==4&&q[i].x<=base;
sort(q+1,q+1+Q,cmp),m=Q; for (;m&&q[m].Is;--m);
for (rr int l=m+1,r;l<=Q;l=r+1){
for (r=l;r<=Q&&q[r].x==q[l].x;++r); --r;
if (!q[l].x){
for (rr int i=1,now=0;i<=n;++i){
if (!a[i]) now=i;
mx[i]=now;
}
for (rr int i=l;i<=r;++i){
if (q[i].l==q[i].r) continue;
if (q[i].l<=mx[q[i].r])
ans[q[i].rk]=1;
}
continue;
}
for (rr int i=0;i<N;++i) last[i]=0;
for (rr int i=1,now=0;i<=n;++i){
last[a[i]]=i;
if (a[i]*q[l].x<N) now=max(now,last[a[i]*q[l].x]);
if (a[i]%q[l].x==0) now=max(now,last[a[i]/q[l].x]);
mx[i]=now;
}
for (rr int i=l;i<=r;++i)
if (q[i].l<=mx[q[i].r])
ans[q[i].rk]=1;
}
for (rr int i=1,L=q[1].l,R=L-1;i<=m;++i){
while (L>q[i].l) add(a[--L]);
while (L<q[i].l) del(a[L++]);
while (R>q[i].r) del(a[R--]);
while (R<q[i].r) add(a[++R]);
switch (q[i].opt){
case 1:ans[q[i].rk]=(uk&(uk<<q[i].x)).any(); break;
case 2:ans[q[i].rk]=(uk&(ku>>(N-q[i].x-1))).any(); break;
case 3:{
if (!q[i].x&&uk[q[i].x]) {ans[q[i].rk]=1; break;}
for (rr int j=1;j<=Sqrt[q[i].x];++j)
if (q[i].x%j==0&&uk[j]&&uk[q[i].x/j]){
ans[q[i].rk]=1; break;
}
break;
}
case 4:{
rr int t=(N-1)/q[i].x;
for (rr int j=1;j<=t;++j)
if (uk[j]&&uk[j*q[i].x]){
ans[q[i].rk]=1; break;
}
break;
}
}
}
for (rr int i=1;i<=Q;++i)
if (ans[i]) printf("yuno\n");
else printf("yumi\n");
return 0;
}

#bitset优化,莫队#洛谷 5355 [Ynoi2017] 由乃的玉米田的更多相关文章

  1. 洛谷P4135 Ynoi2016 掉进兔子洞 (带权bitset?/bitset优化莫队 模板) 题解

    题面. 看到这道题,我第一反应就是莫队. 我甚至也猜出了把所有询问的三个区间压到一起处理然后分别计算对应询问答案. 但是,这么复杂的贡献用什么东西存?难道要开一个数组 query_appear_tim ...

  2. 莫队 [洛谷2709] 小B的询问[洛谷1903]【模板】分块/带修改莫队(数颜色)

    莫队--------一个优雅的暴力 莫队是一个可以在O(n√n)内求出绝大部分无修改的离线的区间问题的答案(只要问题满足转移是O(1)的)即你已知区间[l,r]的解,能在O(1)的时间内求出[l-1, ...

  3. 普通莫队--洛谷P1997 【faebdc的烦恼】

    离散化+莫队 cnt数组表示某个颜色出现的次数 sum数组表示某个数量出现的颜色种类 其它细节问题就按照莫队的模板来的 #include<cstdio> #include<algor ...

  4. 洛谷 P3287 - [SCOI2014]方伯伯的玉米田(BIT 优化 DP)

    洛谷题面传送门 怎么题解区全是 2log 的做法/jk,这里提供一种 1log 并且代码更短(bushi)的做法. 首先考虑对于一个序列 \(a\) 怎样计算将其变成单调不降的最小代价.对于这类涉及区 ...

  5. Machine Learning Codeforces - 940F(带修莫队) && 洛谷P4074 [WC2013]糖果公园

    以下内容未验证,有错请指正... 设块大小为T,则块数为$\frac{n}{T}$ 将询问分为$(\frac{n}{T})^2$块(按照左端点所在块和右端点所在块分块),同块内按时间从小到大依次处理 ...

  6. 洛谷P3287 [SCOI2014]方伯伯的玉米田(树状数组)

    传送门 首先要发现,每一次选择拔高的区间都必须包含最右边的端点 为什么呢?因为如果拔高了一段区间,那么这段区间对于它的左边是更优的,对它的右边会更劣,所以我们每一次选的区间都得包含最右边的端点 我们枚 ...

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

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

  8. 【BZOJ4810】[Ynoi2017]由乃的玉米田 bitset+莫队

    [BZOJ4810][Ynoi2017]由乃的玉米田 Description 由乃在自己的农田边散步,她突然发现田里的一排玉米非常的不美.这排玉米一共有N株,它们的高度参差不齐.由乃认为玉米田不美,所 ...

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

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

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

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

随机推荐

  1. 【Android 逆向】【攻防世界】app2

    1. 手机安装apk,随便点击,进入到第二个页面就停了 2. jadx打开apk,发现一共有三个activity,其中第三个activity: FileDataActivity 里面有东西 publi ...

  2. Vim常用快捷键汇总

    跳到指定行 在命令行模式下输入: :n(n为指定行号)

  3. 看看 ChatGPT 给的前端面试题

    以下是一些可能出现在中国互联网公司前端开发工程师面试中的题目: 解释一下 CSS 盒模型,并说明其中的各个部分. 请解释一下响应式设计是什么,以及你是如何实现响应式设计的. 什么是跨域资源共享(COR ...

  4. 案例分享:Qt高频fpga采集数据压力位移速度加速度分析系统(通道配置、电压转换、采样频率、通道补偿、定时采集、距离采集,导出exce、自动XY轴、隐藏XY轴、隐藏显示通道,文件回放等等)

    需求   1.0-7通道压力采集,采集频率1~100Khz(1,10,20,30-1000Khz):  2.0-7通道压力,可设置补偿值,测量范围:  3.编码器0,1脉冲采集,计算位移,速度,加速度 ...

  5. 【防忘笔记】一个例子理解Pytorch中一维卷积nn.Conv1d

    一维卷积层的各项参数如下 torch.nn.Conv1d(in_channels, out_channels, kernel_size, stride=1, padding=0, dilation=1 ...

  6. 今日问题——无法获取到input的value值

    利用node环境开发系统,样式框架采用bootstrap,其中表单值可以提交到到后台,在数据库中也可查看,但是前端做表单判定的 时候发现无法获取其value值,所有input提交值都为空,判定问题出现 ...

  7. React实现导航栏点击高亮

    在jquery中实现导航栏的切换只需要一行代码找到同级其他元素removeClass以及添加点击元素addClass就可以实现了,但是React没法直接找到同级元素,这个时候需要一点js中的思维,根据 ...

  8. 【Azure Spring Cloud】Azure Spring Cloud connect to SQL using MSI

    问题描述 在Azure Spring Cloud中,通过ActiveDirectoryMSI方式来连接到SQL Service,需要如何配置呢? 问题分析 在SQL Service中启用Active ...

  9. WebView无法加载页面报错 net:ERR_CLEARTEXT_NOT_PERMITTED 还有webView加载网页后出现ERR_UNKNOWN_URL_SCHEME

    根据网络安全配置- 从Android 9(API级别28)开始,默认情况下禁用明文支持.因此http的url均无法在webview中加载 还可以看看-https: //koz.io/android-m ...

  10. Codeforces Round 345 (Div. 1)A. Watchmen(容斥原理)

    A. Watchmen 当欧几里得距离和曼哈顿距离相等时,\(x1==x2||y1==y2\) 这两个条件满足其一.这和容斥原理一样,至少选择一个的条件. 我们可以计算xi,以及小于i之前的这些,这样 ...