题目链接

题目描述

小明来到一片海滩上,他很喜欢捡贝壳,但他只喜欢质量为x的倍数的贝壳。
贝壳被排列成一条直线,下标从 111 到 nnn 编号,小明打算从编号为区间 [l,r]\left [l,r \right ][l,r] 的贝壳中,捡起所有他喜欢的贝壳。你能帮他计算出他能捡多少贝壳吗。
给出一个大小为 n(n≤105)n(n\le10^5)n(n≤105) 的数组,下标从 111 到 nnn 编号,a1,a2,...an(ai≤105)a_1,a_2,...a_n (a_i \le 10^5)a1​,a2​,...an​(ai​≤105) 表示贝壳的质量。
给出 q(q≤5∗104)q(q\le5*10^4)q(q≤5∗104) 次询问,每次询问包含 333 个整数 l,r,x(1≤l≤r≤n,1≤x≤105)l,r,x(1\le l \le r\le n,1\le x\le 10^5)l,r,x(1≤l≤r≤n,1≤x≤105),对于每次询问,输出一行整数,表示这次询问中能捡到的贝壳数。

输入描述:

第一行给出两个整数 nnn 和 qqq,含义如上所示。

第二行给出 nnn 个整数表示 a1,a2,...ana_1,a_2,...a_na1​,a2​,...an​

接下来 qqq 行,每行 333 个整数 l,r,xl,r,xl,r,x,含义如上所示

输出描述:

对于每次询问输出该次询问中能捡到的贝壳数

示例1

输入

5 3
1 2 3 4 5
1 3 2
1 5 3
2 5 4

输出

1
1
1

题解是分块,那我显然不会,如果遍历每个数的话复杂度显然很高,我们换种思路,把每个数存对应的下标,这样一来查询某个区间时,我们只需要遍历所有 xxx 的倍数,二分最长的合法区间即可(因为是按顺序遍历存下标的,所以下标必然有序),AC代码如下:

#include<bits/stdc++.h>using namespace std;
typedef long long ll;
int n, q, x, l, r;
vector<int> pos[100005];int main() {cin >> n >> q;for (int i = 1; i <= n; i++) {cin >> x;pos[x].emplace_back(i);}while (q--) {cin >> l >> r >> x;int ans = 0;for (int i = x; i <= n; i += x) {ans += upper_bound(pos[i].begin(), pos[i].end(), r) - pos[i].begin() -(lower_bound(pos[i].begin(), pos[i].end(), l) - pos[i].begin());}cout << ans << endl;}return 0;
}

2021年广东工业大学第十五届文远知行杯程序设计竞赛(同步赛)E.捡贝壳相关推荐

  1. E-捡贝壳 2021年广东工业大学第十五届文远知行杯程序设计竞赛(同步赛)

    E-捡贝壳 2021年广东工业大学第十五届文远知行杯程序设计竞赛(同步赛) 小明来到一片海滩上,他很喜欢捡贝壳,但他只喜欢质量为x的倍数的贝壳. 贝壳被排列成一条直线,下标从1到n编号,小明打算从编号 ...

  2. G-分割 2021年广东工业大学第十五届文远知行杯程序设计竞赛(同步赛)

    G-分割 2021年广东工业大学第十五届文远知行杯程序设计竞赛(同步赛) 在一个二维平面, 有n条平行于y轴的直线, 他们的x坐标是x[i], m条平行于x轴的直线y[i],他们的y坐标是y[i]. ...

  3. 2021年广东工业大学第十五届文远知行杯程序设计竞赛(E-捡贝壳)

    题目链接:https://ac.nowcoder.com/acm/contest/13504/E 题目的意思是在给定区间寻找为X倍数的数字,首先暴力肯定会超时的,那么就利用之前讲过的利用二维下标去一存 ...

  4. 2021年广东工业大学第十五届文远知行杯程序设计竞赛(同步赛)

    A题M型字符串 链接:https://ac.nowcoder.com/acm/contest/13504/A 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144 ...

  5. 2021年广东工业大学第十五届文远知行杯程序设计竞赛(同步赛)详解

    传送门 A M形字符 题意: M形字符串指的是由两个相同的回文串拼接而成 给你一个串S,问有多少个前缀是M形字符串 思路: M形是有两个相同的回文串构成的,所以这个M形串本身就是回文串,我们只需要判断 ...

  6. 2021年广东工业大学第十五届文远知行杯程序设计竞赛(同步赛)C题 图墙+拉格朗日四平方数和定理

    题意: 其实就是问一个数字能不能表示成5个正平方数的和. 题目: 链接:https://ac.nowcoder.com/acm/problem/220347 来源:牛客网 时间限制:C/C++ 1秒, ...

  7. 2021年广东工业大学第十五届文远知行杯程序设计竞赛(同步赛) H.有多短 思维

    传送门 文章目录 题意: 思路: 题意: 思路: 可以发现树的直径起点和终点一定是两个度数为111的点,所以我们可以把kkk平均的分给所有度数为111的点,这样答案就为2∗kcnt\frac{2*k} ...

  8. 2021年广东工业大学第十五届文远知行杯程序设计竞赛(同步赛)部分题解

    A.A M形字符串 简要题解 题解代码 #include <iostream> #include <string> using namespace std; typedef u ...

  9. 2021年广东工业大学第十五届文远知行杯程序设计竞赛 E.捡贝壳(离线做法)

    题意: 解法: 每组询问是查询[l,r]中x的倍数, 显然可以拆分为:[1,r]中x的倍数-[1,l-1]中x的倍数.令d[i][x]表示前i个数中有多少个数是x的倍数, O(n*(n+sq))预处理 ...

最新文章

  1. android混淆和反编译
  2. LISP 图层前后缀_lisp获取qleader端点_lisp以一个图层来做定义快名称怎么实现
  3. hdu 1043 Eight 搜索,哈希
  4. 转]SQLServerDBA十大必备工具
  5. 组件接口(API)设计指南-文件夹
  6. java byte数组string_byte数组和String之间的转化
  7. 用深度优先搜索解决最长路径问题
  8. 王石先生深奥的脑筋急转弯
  9. flashfxp链接不上,flashfxp链接不上是因为什么
  10. 视觉三维重建核心算法讲解和代码实现(sfm构建稀疏地图和mvs构建稠密地图)...
  11. 你真的了解人工智能吗?——聊聊AI的碰壁和冬天
  12. 图片加文字怎么弄?介绍几款不错的电脑图片编辑软件
  13. 王森:程序设计师真情忏悔录
  14. python 绘制3D图
  15. 第四章网络安全学习笔记(超详细)
  16. 深度学习英文缩写_机器学习、深度学习……人工智能那些名词你知道几个?
  17. Ubuntu下adb无法识别android设备的解决方法
  18. Argo-DCS数据传输笔记
  19. C++自学教程第一课——你好世界,我是柠檬鲸。
  20. 《安富莱嵌入式周报》第292期:树莓派单片机100M双通道示波器开源,MDK5.38发布,万用表单芯片解决方案,8通道±25V模拟前端芯片,开源贴片拾取电机板

热门文章

  1. 微信公众号开发之授权登录(前端vue篇)
  2. jenkins + gitlab 自动化构建全流程记录。
  3. 激光slam课程学习笔记--第7课:基于滤波的SLAM方法(Grid-based)
  4. 深入浅出DNS系列(九)- EDNS
  5. 外贸公司申请E-mark认证有什么要求?
  6. 哈尔滨 java 哈工大_java程序设计-4哈工大全部课件.pptx
  7. 高清电视HDTV概述
  8. Tableau绘制漏斗图、甘特图、瀑布图、镶边面积图、阴影坡度图
  9. GitHub 30.2K Star,无需编码,可一键生成前后端代码,这个开源项目有点强!
  10. Readyfor4GB帮你的32位Win7用4G内存_我是亲民_新浪博客