2023牛客寒假算法基础集训营6 B-阿宁的倍数

医疗AI新思路:为什么Graph Neural Network能改善气道分割的漏检问题? 本文探讨了Graph Neural Network(GNN)在医疗AI领域改善气道分割漏检问题的创新应用。通过分析3D UNet等传统方法的局限性,揭示了GNN在图结构建模中的独特优势,特别是在捕捉细小末梢支气管方面的突破性表现。文章详细介绍了UNet-GNN混合架构的设计原理、实验性能对比及优化方向,为CT影像分析提供了新思路。 阅读详情

题目描述:

给出一个长度为n的数组a,下标从1开始,进行q次操作。

修改操作:数组末尾增加一个数x,数组长度加1。

询问操作:有多少个i(i>x),满足ai是ax的倍数?

输入:

n,q。

a1,a2,…,ai(1<=i<=n)。

1<=n,q,ai<=2e5;

接下来q行查询,每行两个数op,x,代表一次操作。

如果op是1代表是修改操作;如果是2代表是询问操作。

如果是修改操作,1<=x<=2e5。

如果是询问操作,x小于等于当前数组长度。

输出:

对每一个询问操作,输出有多少ai是ax的倍数。

Solution:

考虑到如果ai是ax的倍数,则ai一定存在一个约数等于ax,所以对于已给出的数组a,我们可以从后往前枚举每个数的约数,将每种约数的个数用一个数组c来储存,当访问第i个数的时候,c[a[i]]即为所求,此处我们用一个数组s,令s[i]=c[a[i]]来存储对于原数组a的第i个位置,[i+1,n]中有多少个数能整除ai。

由于ai<=2e5,约数个数小于500,复杂度为O(500*2e5),故不会超时。

而在考虑操作1的x时,设p为操作1的次数,由于操作1的x是依此添加的,故我们不能照搬以上操作,以下我们对于两种操作2的询问情况进行考虑:

①1<=x<=n:

由于在操作1的添加是在原数组a之后的,故将添加进来的新数,我们只需要将其所有数的每种约数的个数用同样的数组c来储存,进行操作2时,我们只需要输出s[x]+c[a[x]]即使答案。

②n<x<=n+p时:

由于操作1的添加顺序,我们只能从前往后储存每种约数的个数,然而我们访问所求的是[x+1,n+p]中有多少个数存在约数等于a[x],此处我们考虑前缀和的做法,sum[p][j]表示在第p次添加后,约数j的个数为多少,这样在操作2时我们输出sum[p][a[x]]-sum[x][a[i]]即使[x+1,n+p]中能整除a[x]的个数。

但是我们实际操作发现,sum的两维都是2e5显然会爆空间,但是我们依旧要储存每次添加x后的状态,故此处我们转换一种方式,用一个vector<pair<int,int>>v[2e5],储存每种约数在第p次添加数时的个数,2e5储存约数种类,pair的first储存当前添加次数p,second储存当前约数的个数,

说得比较绕,此处举个例子:

第1次添加了一个数2后,其约数为1,2,p=1,则v[1].push_back({1,1}),v[2].push_back({1,1})

第2次添加了一个数4后,其约数为1,2,4,p=2,则v[1].push_back({2,2}),v[2].push_back({2,2}),v[4].push_back({2,1})。

由于在此过程中,我们已经用c储存了每种约数的个数,对于任意v[j]的second我们只需让其等于c[j]即可。

而在询问查找时,由于v的first一定有序,故我们只需要在v[a[x]]中二分查找到v[a[x]][mid].first==x,此时v[a[x]][mid].second等于是[n+1,n+x]中约数a[x]的个数,而我们要求的是[n+x+1,n+p]中约数a[x]的个数,而从刚刚前缀和思想中我们就可以简单得出,所求为v[a[x]][v.size()-1].second-v[a[x]][mid].second。

C++code:

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<ll, ll>PLL;
const ll N = 4e5 + 10;
ll n, q;
ll a[N], s[N], c[N];
vector<PLL>v[N];
ll sech(ll pos, ll num) {//二分查询[n+x+1,n+p]中整除a[x]的个数
    ll k = v[num].size();
    ll l = 0, r = k - 1;
    while (l < r) {
        ll mid = l + r >> 1;
        if (v[num][mid].first >= pos)r = mid;
        else l = mid + 1;
    }
    return v[num][k - 1].second - v[num][r].second;
}

int main() {
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);

    cin >> n >> q;
    ll p = 0;
    for (ll i = 1; i <= n; i++)cin >> a[i];
    for (ll i = n; i >= 1; i--) {//离线操作出原数组a中第i个数可以被[i+1,n]中多少个数整除
        s[i] = c[a[i]];
        for (ll j = 1; j * j <= a[i]; j++) {
            if (a[i] % j == 0) {
                c[j]++;
                if (j * j != a[i])c[a[i] / j]++;
            }
        }
    }
    memset(c, 0, sizeof c);
    while (q--) {
        ll op, x;
        cin >> op >> x;
        if (op == 1) {//操作1
            ++p;
            a[n + p] = x;

            for (ll j = 1; j * j <= x; j++) {
                if (x % j == 0) {
                    c[j]++;
                    v[j].push_back({ p,c[j] });//将每次添加后的约数状态存入vector
                    if (j * j != x) {
                        c[x / j]++;
                        v[x / j].push_back({ p,c[x / j] });
                    }
                }
            }
        }
        else {//操作2
            if (x >= 1 && x <= n) cout << s[x] + c[a[x]] << endl;
            else cout << sech(x - n, a[x]) << endl;
        }
    }
    return 0;
}
从零开始用飞牛fnas搭建集成DeepSeek-R1的远程AI工作台 阅读详情

相关推荐

python sci sci-hub 爬论文

sci-hub 爬虫 后续加入对于时间的排序,下载最新文献 参考: https://www.guanjihuan.com/archives/6846 https://blog.youkuaiyun.com/czh2637750821/article/details/115508922

weixin_42783619的博客 3542

问题 K: 序列的区间操作

问题 K: 序列的区间操作 时间限制: 1 Sec  内存限制: 256 MB 提交: 36  解决: 5 [提交][状态][讨论版] 题目描述 给你[1, N]共N个数,和Q次操作,每次操作将区间[x, y]里面的数全加v。 要求你按顺序输出Q次操作后这N个数。  输入 有多组测试数据,请处理到文件结束。 每组数据给定两个整数N和Q,接下来有Q行,表示Q次操

leibniz_zhang的博客 810

从零开始:使用Mask2Former训练你的专属图像分割数据集

本文详细介绍了如何使用Mask2Former训练自定义图像分割数据集,从环境配置、数据集准备到模型训练与优化。通过实战技巧和问题排查指南,帮助开发者高效完成从零开始的图像分割任务,特别适合需要处理自定义数据集的AI研究人员和工程师。

weixin_30566063的博客 645

2023牛客寒假算法基础集训营6

2023牛客寒假算法基础集训营6

yuanxinya_的博客 934

从零到一:FAST_LIO与FAST_LIO2算法环境搭建与实战评测

本文详细介绍了FAST_LIO与FAST_LIO2算法的环境搭建与实战评测,包括算法原理、环境配置避坑指南、源码编译技巧及性能对比。FAST_LIO2凭借ikd-tree数据结构在动态环境中表现优异,处理速度提升至15ms,内存占用降低40%。文章还提供了常见问题排查和进阶优化技巧,助力开发者高效实现SLAM应用。

weixin_29271053的博客 470

【Python&RS】Rasterio库安装+基础函数使用教程

Rasterio是一个Python库,专门用于栅格数据的读写操作。它支持多种栅格数据格式,如GeoTIFF、ENVI和HDF5,为处理和分析栅格数据提供了强大的工具。RasterIO适用于各种栅格数据应用,如卫星遥感、地图制作等。这篇文章跟大家介绍一下Rasterio库的安装以及一些基本函数的使用教程,附带源码。

Remote Sensing迷途小书童 1万+

题解 | 2023牛客寒假算法基础集训营6

题解 | 2023牛客寒假算法基础集训营6

奇妙方程式的博客 364

Ubuntu20.04系统Cuckoo sandbox所需环境搭建及安装(超详细图文)

请勿叫我大神,我只是互联网的搬运工~ 前言 本教程以Ubuntu20桌面版作为示范,服务器版同样适用,但可能稍微麻烦一点,服务器版本的话安装Xmanage套装使用可能会相对轻松一些,由于后面会使用到vbox的使用,对vbox命令行操作不熟悉的小伙伴用xmanage可能会相对轻松一点。 提示:以下是本篇文章正文内容,下面案例可供参考 安装ubuntu20桌面版 步骤1:转到https://ubuntu.com/download/desktop下载下载.iso。 步骤2:使用您选择的虚拟机监控程序(VMWa

ElsonHY的博客 1万+

2023牛客寒假算法集训营6

A. 阿宁的签到题 题意: 输入一个数 x ,判断评分等级。 有以下等级: - ​ very easy (1≤x≤7) - ​ easy (7

Tom的博客 650

迈创cameralink采集卡安装操作说明

迈创cameralink采集卡安装操作说明MIL软件安装MIL软件下载获取MIL软件安装MIL软件安装常见问题 MIL软件安装 MIL软件下载获取 MIL软件安装 解压MIL安装包,点击MilSetup.exe开始安装,如下图所示; 备注:64位系统MIL软件可以同时安装32位和64位客户端,本文档默认安装64位客户端,64位系统安装32位MIL方法后续再展开讲(不建议这样用,很麻烦) 点击Launch Installation开始安装,64位系统,默认只安装64位MIL客户端 根据采集卡驱动,选择M

qq_23107577的博客 9354

由Sensor光谱响应曲线联想到的白平衡增益计算

由Sensor光谱响应曲线联想到的白平衡增益计算 由于传感器硬件的限制,传感器在某个预定波长范围内的响应不可能是100% 响应。现实中都是类似于正态分布的单峰函数。如果仅做粗略计算,由一个中心波长和半高宽(也成半波宽)完全可以由数学公式计算出一个高斯分布曲线。这个分布曲线就叫波谱响应函数。 波谱响应函数反映了传感器通道获取能量的情况。实际上每个传感器厂商都提供了具体的光谱响应函数,一般由两列数据组成,一列数据是波长,另一列数据是相对响应强度。下图某sensor光谱的响应的波谱响应函数。 ...

大熊 7490

2023牛客寒假算法集训营5

A. 小沙の好客(贪心 + 排序 + 前缀和 + 二分) 题意: 有一家超市,里面有 n 件商品。 有 Q 个问题,每次询问要求挑选最多 k 个价值不大于 x 的商品,问能挑选的价值和最大为多少。 B. 小沙の博弈(贪心 + 字典序) 题意: 小沙和小雅在玩"拿石子游戏"他们两个人都十分聪明,均会选择最优的方法使得自己获胜。桌子上有 n 个石子 ,他们两个人面前均有排成一行的若干个格子,每个格子都可以置放无限多个石子。 小沙和小雅两个人交替进行操作,小沙先手,每次操作可以从桌子上拿走任意正整数个石子

Tom的博客 929

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

2023牛客寒假算法基础集训营6(题解及经验总结)

2023牛客寒假算法基础集训营6 A 阿宁的签到题 B 阿宁的倍数 C 阿宁的大背包 D 阿宁的毒瘤题 E 阿宁的生成树 F 阿宁的二进制 G 阿宁的整数配对 H 阿宁讨伐虚空 I 阿宁前往沙城

qq_73635134的博客 353

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

牛客寒假训练营6 阿宁的倍数

数论

weixin_62528401的博客 218

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

2023牛客寒假算法基础集训营6(9/12)

2023牛客寒假算法基础集训营6

eyuhaobanga的博客 401

2023牛客寒假算法基础集训营1

2023牛客寒假算法基础集训营1

m0_63216173的博客 947

2023牛客寒假算法基础集训营4 赛时思路+正解

也许是qdu acmer写的最后一篇寒假训练营题解。

qq_52358098的博客 1238

2023牛寒--阿宁的倍数

阿宁有一个长度为n的数组a,下标从1开始,有q次操作。修改操作:数组末尾增加一个数x,数组长度加1。询问操作:有多少个i(i>x),满足ai是ax​的倍数?阿宁有一个长度为n的数组a,下标从1开始,有q次操作。如果op是1代表是修改操作;如果是2代表是询问操作。修改操作:数组末尾增加一个数x,数组长度加1。接下来q行,每行两个数op,x,代表一次操作。如果是询问操作,x小于等于当前数组长度。对于每次询问操作,输出一个整数,占一行。如果是修改操作,1≤x≤2×10^5。

小小小Why的博客 808

2023牛客寒假算法基础集训营3

2023牛客寒假算法基础集训营3

qq_62977654的博客 268

牛客2023寒假补题

思路:当数字出现的次数sum>k时无论怎么分组最多都只能满足k-1,sum

yueazero的博客 226

【题解】2023牛客寒假算法基础集训营2

贪心的想,总权值最大,可能存在一个点处于v的边界上,再看数据范围,因此我们可以枚举边界(即H),用map存一下分别对应的改变区间,最后,分别枚举不同的H求maxv即可。贪心的想,当一个大的权值点深度越深,则它被求sum的次数就越多,所以我们就往这个方向靠,求出每个点的深度,深度越深,则赋予其越大的权值,最后累加求和即可。我们发现,当前分成k组时,如果某种元素个数k,则该种元素的造成的影响是k-1,累加即可。tag:贪心,dfs,bfs,树形DP。

qq_52765554的博客 2550
上一篇: 2023牛客寒假算法基础集训营5 F-小沙の串串 线段树写法
下一篇: 2023牛客寒假算法基础集训营6 E-阿宁的生成树
TrRicky
博客等级 码龄5年 10粉丝 24原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值