数列互质(莫队离线算法)

hdu 离线处理题目集锦 hdu 3874 题意:n 阅读详情

题目描述 

给出一个长度为 n 的数列 { a[1] , a[2] , a[3] , ... , a[n] },以及 m 组询问 ( l[i] , r[i] , k[i])。
求数列下标区间在 [ l[i] , r[i] ] 中有多少数在该区间中的出现次数与 k[i] 互质(最大公约数为1)。

输入描述:

第一行,两个正整数 n , m (1 ≤ n, m ≤ 50000)。
第二行,n 个正整数 a[i] (1 ≤ a[i] ≤ n)描述这个数列。
接下来 m 行,每行三个正整数 l[i] , r[i] , k[i] (1 ≤ l[i] ≤ r[i] ≤ n, 1 ≤ k[i] ≤ n),描述一次询问。

输出描述:

输出 m 行,即每次询问的答案。

示例1

输入

复制

10 5
1 1 1 1 1 2 2 2 2 2
4 7 2
4 7 3
4 8 2

涉及到区间问题 而且没有区间修改

可以很好的用莫队算法 

维护区间出现某个数 的次数


4 8 3
3 8 3

输出

复制

0
2
1
1
0
const int MAX=1e6+10;
int pos[MAX];
int a[MAX];
int ans[MAX];
int num[MAX];
int cnt;
int n,m;
struct node{
    int l,r,id,k;
}q[MAX];
int L=1;
int R=0;
bool cmp(node a,node b){
    if(pos[a.l]==pos[b.l])
    {
        return a.r<b.r;
    }
    return pos[a.l]<pos[b.l];
}
void del(int x){
    num[x]--;
}
void add(int x){
    num[x]++;
}
void solve(node e){
    int l=e.l;
    int r=e.r;
    while(L>l) add(a[--L]);
    while(L<l) del(a[L++]);
    while(R<r) add(a[++R]);
    while(R>r) del(a[R--]);
}
set<int>s;
int main(){
    cin>>n>>m;
    int block=sqrt(n);
    for(int i=1;i<=n;i++){
        cin>>a[i];
        s.insert(a[i]);
        pos[i]=i/block;
    }
    for(int i=1;i<=m;i++){
        cin>>q[i].l>>q[i].r>>q[i].k;
        q[i].id=i;
    }
    sort(q+1,q+1+m,cmp);
    for(int i=1;i<=m;i++){
        solve(q[i]);
        int tot=0;
        for(set<int>::iterator it=s.begin();it!=s.end();it++){
            if(gcd(num[*it],q[i].k)==1&&num[*it])
                tot++;
        }
        ans[q[i].id]=tot;
    }
    for(int i=1;i<=m;i++){
        cout<<ans[i]<<endl;
        
    }
}
手把手教你用VSCode+SDL在Ubuntu上跑LVGL8.2模拟器(附插件清单) 本文详细介绍了在Ubuntu系统上使用VSCode和SDL库搭建LVGL8.2模拟器环境的完整流程,特别适合嵌入式开发者(如全志F1C100s平台)进行UI设计验证。从环境配置、项目编译到VSCode深度集成,提供了实用技巧和常见问题解决方案,帮助开发者实现'先模拟后真机'的高效开发模式。 阅读详情

相关推荐

(八)基于MuJoCo的LeRobot SO100仿真操控实战指南(操作优化)

本文详细介绍了如何在MuJoCo仿真环境中搭建并优化LeRobot SO100机械臂的操控。通过两种核心模式(纯键盘仿真与实机镜像同步)的实战演示,重点讲解了关键的参数标定方法,以实现虚拟模型与真实硬件的精准同步。文章还提供了性能优化技巧,旨在帮助开发者构建高效、安全的机器人算法开发与测试流程。

weixin_29083649的博客 318

牛客小白月赛17 G区间求和 莫队

传送门 题目:给你n个数,每个数为ai​,现在有m个询问,每个询问l,r,需要求出:代表ai​在这个区间中出现的次数。 题解:莫队模板题 算法学习博客 #include<bits/stdc++.h> using namespace std; typedef long long ll; const int N = 1e5+10; int n, m; int a[N]; s...

Pikachu的博客 345

在 Kubernetes 上部署 Label Studio

Label Studio 是一款开源的数据标注工具,支持多种标注任务,如文本标注、图像标注、音频标注等。

啥都会一点 668

题解专栏(六):数列互质

数信学院第一届程序设计竞赛原题

Edward_Kenway的博客 498

安装VMware,出现没有虚拟网络适配器的问题

安装VMware,出现没有虚拟网络适配器的问题

Young_Harry的博客 1万+

PCB过孔全介绍

过孔(via)是多层PCB的重要组成部分之一,钻孔的费用通常占PCB制板费用的30%到40%。简单的说来,PCB上的每一个孔都可以称之为过孔。从作用上看,过孔可以分成两类:一是用作各层间的电气连接;二是用作器件的固定或定位。如果从工艺制程上来说,这些过孔一般又分为三类,即盲孔(blind via)、埋孔(buried via)和通孔(through via)。盲孔位于印刷线路板的顶层和底层表面,具

小王的自我修行路 2356

数列互质(莫队算法)

第二行,n 个正整数 a[i] (1 ≤ a[i] ≤ n)描述这个数列。接下来 m 行,每行三个正整数 l[i] , r[i] , k[i] (1 ≤ l[i] ≤ r[i] ≤ n, 1 ≤ k[i] ≤ n),描述一次询问。给出一个长度为 n 的数列 { a[1] , a[2] , a[3] , ... , a[n] },以及 m 组询问 ( l[i] , r[i] , k[i])。求数列下标区间在 [ l[i] , r[i] ] 中有多少数在该区间中的出现次数与 k[i] 互质(最大公约数为1)。

qq_45577476的博客 297

仿真学习系列(二):ADS仿真直观理解方波与频谱分量的关系

在高速电路设计中,我们常常听到一句话:“信号其实不是电压在传输,而是频率在传播。” 这句话看似抽象,却揭示了信号世界的核心本质——任何时域波形,都可以被拆解为一系列不同频率的正弦波。 那么,一个看似简单的方波,究竟由哪些频率成分组成?为什么在示波器上,有的方波上升沿又快又“方”,而有的却“圆润”得多?这些差异背后,隐藏的正是高频分量的力量。 本文将通过使用 Keysight ADS,从零搭建仿真电路,直观地观察方波与其谐波成分之间的关系。

案例文章,高速信号 813

用python解决给定一个长度为 n 的数列 A_{1}, A_{2}, ..., A_{n} 和一个非负整数 x, 给定 m 次查 询, 每次询问能否从某个区间 [l, r][l,r] 中选择两个数...

答案:可以使用哈希表来解决这个问题。首先,遍历数列中的每个数,将其与 x 异或的结果作为 key,当前的索引作为 value 存入哈希表中,然后在查询的时候,遍历 l 到 r 之间的每个数,看看它是否在哈希表中,如果存在,则说明从 [l, r][l,r] 中可以找到两个数使得它们的异或等于 x。 ...

weixin_35751412的博客 1288

OpenClaw人人养虾:接入Synology Chat

Synology Chat 是群晖 NAS(Network Attached Storage,网络附属存储)内置的即时通讯应用。

王国平的博客 780

HarmonyOS应用开发者基础认证

B. 自定义组件:可复用的 UI 单元,可组合其它组件。D. 内置组件:ArkTS中默认内置的基本组件和布局组件,开发者可以直接调用,如Column、Text、Divider、Button等。E. 属性方法:用于组件属性的配置,统一通过属性方法进行设置,如fontSize()、width()、height()、color() 等。在Column和Row容器组件中,justifyContent用于设置子组件在主轴方向上的对齐格式,alignItems用于设置子组件在交叉轴方向上的对齐格式。

牛肉胡辣汤 3817

等差子数列 HihoCoder - 1710

HihoCoder - 1710 给定N个整数A1, A2, … AN,小Hi会询问你M个问题。 对于每个问题小Hi给出两个整数L和R(L ≤ R),请你找出[AL, AL+1, AL+2, … AR]中最长的等差连续子数列,并输出其长度。 例如[2, 3, 5, 7, 9]中最长的等差连续子数列是[3, 5, 7, 9]长度为4。 Input 第一行包含两个整数N和M。 第二行包含N个整数...

qq_41925919的博客 449

【知识点讲解】大模型参数量与计算量(FLOPs)估算方法

指标参数量 (Params)计算量 (FLOPs)含义模型的大小,静态模型的计算复杂度,动态决定因素模型结构(宽度、深度)模型结构 +输入数据(B, S)影响内存占用、磁盘空间运行速度、能耗单位M (百万), B (十亿)工具thopptflopstorchinfothopptflopsfvcore重要提示FLOPs ≠ 速度:FLOPs 是理论计算量。实际速度还受内存带宽 (Memory Bandwidth)并行度硬件架构等因素严重影响。

AI浩 2096

#6164. 「美团 CodeM 初赛 Round A」数列互质-莫队

#6164.「美团 CodeM 初赛 Round A」数列互质 思路 : 对这个题来言,莫队可以 n*根号n 离线处理出各个数出现个的次数 ,同时可以得到每个次数出现的次数 , 但是还要处理有多少 次数 与ki互质 。根据数列的性质,无论这个区间多长,最长也就是 1 - n这个区间 ,所能产生的 不同的次数 也就是 根号 n 种 例如 长度为28的 数列 1 2 2 3 3 3 4...

weixin_34413103的博客 213

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

莫队离线算法

莫队算法,就裸题的基础上进行修改,题目问的多少数在该区间中的出现次数与k[i]互质,用莫队来维护区间内每个数出现的次数,然后枚举区间内出现的数的次数是否与k[i]互质,枚举的话不要从1~n全部枚举,因为题目可能只给了一部分数,其他在重复,所以可以用set来存数,因为set有自动筛重的功能。接下来 m 行,每行三个正整数 l[i] , r[i] , k[i] (1 ≤ l[i] ≤ r[i] ≤ n, 1 ≤ k[i] ≤ n),描述一次询问。, a[n] },以及 m 组询问 ( l[i] ,

weixin_74088105的博客 205

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

hdu 4777 Rabbit Kingdom(离线+树状数组)

题意:给出n个数,有m个查询,每次查询询问区间[L,R]中最多有多少个数与区间中其他数都不互质。 思路:首先预处理一下,把每个数的因子求出来(不包含1,因为1和任何数都互质),这个比较简单……然后再预处理一下第i个数向左最小的和它不互质的数的位置和第i个数向右和它不互质的数的位置(用lf[i]和rn[i]表示)。接下来的操作比较烦,不太好理解。先说下大体思路吧,把所有操作存起来,然后从左到右依次

绝望的乐园 3092

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

hdu 4407 Sum 容斥+离线

求X-Y之间和p互质的数的和,典型的容斥问题,求和用等差数列求和,注意首项末项是多少。 首先记录下不修改的答案,离线处理,存下询问,输出的时候,遇到一个操作1,就遍历前面的操作,把修改加上去,注意要判重,只保留最后一次修改。 #include #include #include #include #include #include using namespace std; typed

1003

hdu 4777 Rabbit Kingdom (2013acmicpc亚洲区域赛杭州站 H)

http://acm.hdu.edu.cn/showproblem.php?pid=4777 Rabbit Kingdom Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 296    Accepted Submission

ddyyxx的程序员之路 3628

HDU 4777 Rabbit Kingdom [离线+树状数组]

给出N个数,以及M个询问区间,需要输出每个区间内与区间内其他数都互质的数的数目(不包括本身)。

Asuna_acmer 832

hdu 4777 Rabbit Kingdom(离线树状数组&思维)

Rabbit Kingdom Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 964    Accepted Submission(s): 315 Problem Description   Long long ago,

记录成长的点点滴滴. . . . . 1417

13杭州区域赛现场赛Rabbit Kingdom(树状数组+离线)

题意:给你一个长度数列,再给你m个询问(一个区间),问你在这个区间里面有多少个数与其他的数都互质。 解题思路:你看这种类型的题目都可以肯定这是 离线+树状数组(线段树)。主要就是他的更新信息。这里我的处理是先把1-200000(每个数的范围)数里面所有的质因子求出来。然后从后往前遍历数组。会出现以下几种情况 1.a[k]的质因子在后面出现过而【更新标记】 和【被更新标记】 ...

weixin_30533797的博客 138

hdu4777——Rabbit Kingdom

题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=4777 题目大意 长度为n的序列,m次询问,每次询问 [l,r] 中与其它数不互质的数有几个。 解题思路 离线树状数组。将询问按右端点 r 从小到达排序。预处理出每个数左端与其最近的互质数位置,以及右端与其最近的互质数位置。然后维护一个树状数组,表示不合法的数的数量。最后答案就是当前询问长度 r-l+1 减去 当前区间不合法的数的数量。 树状数组维护思路,每次到一个点 i ,将其 l[i] 位置树状数组 +1,因

hhhcbw的博客,欢迎各位来访 207

hdu Sum 容斥定理的应用

http://acm.hdu.edu.cn/showproblem.php?pid=4407 比赛的时候想到了先求与p不互质的然后减去,但是就是遇到了容斥处理的问题,当时没有想到对因子容斥,只想到求和容斥那去了。。哎。悲剧啊、、 题意: 给出一个长度为n序列初始值为1,2,......n对其进行两种操作: "2 x c"  将x位置的值替换成y;  "1 x y p" 求区间[x,y]内...

weixin_34151004的博客 171

hdu4777 Rabbit Kingdom(思维题+树状数组)

题目 给长度为n的数列a[],以下m个询问, 每个询问给出[li,ri], 问[li,ri]内与其他数都互质的数的个数 n,m,ai&lt;=2e5 思路来源 https://www.cnblogs.com/alihenaixiao/p/4917359.html 题解 考虑离线做这个题, 先对所有的查询进行排序 (按照L升序排列) ,然后从左到右依次处理。 先处理出每个数...

小衣同学的博客 398

HDU-4777 Rabbit Kingdom(区间更新求和)

题目大意:给一个n个整数的数列,q次询问,每次询问区间[l,r]中与区间中其它数互质的数的个数.。 题目分析:离线处理,这里以询问区间的左端点从小到大的顺序为例。为了叙述方便,用f(l,r)表示区间[l,r]中与区间中其它数互质的数的个数.。每次用线段树或树状数组维护以 a(i)(1<=i<=n) 为左端点的所有区间的 f 值的前缀和。左端点从1~n,每变化一次,便做一次更...

weixin_30916125的博客 165
上一篇: 矩阵消除游戏(状压+dfs)
下一篇: 最小总代价(状压dp)
郭晋龙
博客等级 码龄6年 940粉丝 449原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

郭晋龙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值