YbtOJ 质数与约数 4.统计元素
搜不到题解,乐。
由题意,\(a_i\) 对答案有贡献当且仅当 \(i\in{[l,r]}\) 且对于 \(\forall a_j| {a_i},j\notin[l,r]\)。
则对于每个 \(a_i\),分别维护其左侧及右侧第一个能被 \(a_i\) 整除的数为 \(lst_{i},nxt_{i}\)。
当 \(a_i\) 有贡献时,\(lst_i<l\le{i}\) 且 \(i\le{r}<nxt_i\)。符合条件的 \([l,r]\) 个数为 \((i-lst_i)\times(nxt_i-i)\)。
至于 \(lst\) 和 \(nxt\) 数组,求的过程中开个桶维护前面出现过约数的位置就好了。
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=1e5+5;
const int mod=1e9+7;
int n,a[N];
int t[N],ans;
int lst[N],nxt[N];
signed main()
{
scanf("%lld",&n);
for(int i=1;i<=n;i++) scanf("%lld",&a[i]);
for(int i=1;i<=n;i++)
{
for(int j=1;j*j<=a[i];j++)
if(a[i]%j==0) lst[i]=max(lst[i],max(t[j],t[a[i]/j]));
t[a[i]]=i;
}
memset(t,0x3f3f3f,sizeof(t));
for(int i=n;i;i--)
{
nxt[i]=n+1;
for(int j=1;j*j<=a[i];j++)
if(a[i]%j==0) nxt[i]=min(nxt[i],min(t[j],t[a[i]/j]));
t[a[i]]=i;
}
//for(int i=1;i<=n;i++) cout<<nxt[i]<<" ";
for(int i=1;i<=n;i++)
ans=(ans+(i-lst[i])*(nxt[i]-i)%mod)%mod;
cout<<ans<<endl;
return 0;
}
YbtOJ 质数与约数 4.统计元素的更多相关文章
- python统计元素重复次数
python统计元素重复次数 # !/usr/bin/python3.4 # -*- coding: utf-8 -*- from collections import Counter arr = [ ...
- JUC源码学习笔记8——ConcurrentHashMap源码分析1 如何实现低粒度锁的插入,如何实现统计元素个数,如何实现并发扩容迁移
源码基于jdk1.8 这一片主要讲述ConcurrentHashMap如何实现低粒度锁的插入,如何实现统计元素个数,如何实现并发扩容迁移 系列文章目录和关于我 一丶ConcurrentHashMap概 ...
- 【基础数学】质数,约数,分解质因数,GCD,LCM
1.质数: 质数(prime number)又称素数,有无限个.一个大于1的自然数,除了1和它本身外,不能整除以其他自然数(质数),换句话说就是该数除了1和它本身以外不再有其他的因数. 2.约数: 如 ...
- YbtOJ#943-平方约数【莫比乌斯反演,平衡规划】
正题 题目链接:http://www.ybtoj.com.cn/contest/122/problem/3 题目大意 \(S(i)\)表示\(i\)的约数个数,\(Q\)次询问给出\(n,m\)求 \ ...
- MATLAB 统计元素出现的次数
可以使用 hist 函数: A = [1 2 8 8 1 8 2 1 8 2 1]; count = hist(A,unique(A)) count的结果与unique(A)对应.
- c++ 在指定长度的数组或者容器中,统计元素出现的次数(count)
#include <iostream> // cout #include <algorithm> // count #include <vector> // vec ...
- Python中用dict统计列表中元素出现的次数
01 Python增加元素,不像其他语言使用现实的操作接口,只需要dict[1]=3,如果字典中不存在1,则直接新增元素键值对(1,3),如果存在则替换键1为3. if key in dict:判断出 ...
- Python 统计列表中重复元素的个数并返回其索引值
需求:统计列表list1中元素3的个数,并返回每个元素的索引 list1 = [3, 3, 8, 9, 2, 10, 6, 2, 8, 3, 4, 5, 5, 4, 1, 5, 9, 7, 10, 2 ...
- LeetCode - 统计数组中的元素
1. 统计数组中元素总结 1.1 统计元素出现的次数 为了统计元素出现的次数,我们肯定需要一个map来记录每个数组以及对应数字出现的频次.这里map的选择比较有讲究: 如果数据的范围有限制,如:只有小 ...
- Linq to SQL 语法查询(链接查询,子查询 & in操作 & join,分组统计等)
Linq to SQL 语法查询(链接查询,子查询 & in操作 & join,分组统计等) 子查询 描述:查询订单数超过5的顾客信息 查询句法: var 子查询 = from c i ...
随机推荐
- 【ssh】SSH连接远程主机的两种方式
一.基于用户名与密码连接 指令 ssh username@server_ip 随后要求输入密码 加密流程 1️⃣ 在SSH连接建立过程中,客户端和服务器使用Diffie-Hellman密钥交换协议协商 ...
- 在映客的虚拟KTV里唱了一首“爱你”
如果你突然打了个喷嚏 那一定就是我在想你 如果半夜被手机吵醒 啊~那是你的虚拟 KTV 在响起 2022 年 5 月 18 日,映客 App 上线了业内首个元宇宙 K 歌玩法「全景 K 歌」,给用 ...
- C语言链表实现(郝斌数链表学习笔记)
#include "stdafx.h" #include<stdio.h> #include<stdlib.h> typedef struct Node { ...
- MySQL_Explain详解
当我们在工作中面临SQL优化的问题时,熟练掌握适合的工具,就能使事半功倍,提高工作效率.其中,EXPLAIN工具就是一种常用且高效的SQL优化工具. EXPLAIN关键字的使用方法是,在select语 ...
- 自动刷新服务:nodemon
安装命令: npm install -g nodemon 运行命令: nodemon server.js 运行结果:
- python-stack
implements list deque LifoQueue 原文地址:https://realpython.com/how-to-implement-python-stack/ Argue lis ...
- [linux]搭建nfs
环境 说明 IP 系统版本 服务端 192.168.137.7 centos 7 客户端 192.168.137.8 centos 7 步骤 配置服务端 安装 nfs 服务 yum install - ...
- 7、Spring之基于注解管理bean
本质上:所有一切的操作都是Java代码来完成的,XML和注解只是告诉框架中的Java代码如何执行. 7.1.环境搭建 创建名为spring_ioc_annotation的新module,过程参考3.1 ...
- 【LaTeX】环境配置以及中文支持
目录 网页环境 Overleaf 本地环境 TeX Live TeXstudio VSCode 安装 LaTeX Workshop 扩展 编译链配置 正向同步 反向同步 其他可选配置 中文支持 XeL ...
- 《SQLi-Labs》02. Less 6~10
@ 目录 索引 Less-6 题解 原理 Less-7 题解 Less-8 题解 Less-9 题解 原理 Less-10 题解 sqli.开启新坑. 索引 Less-6:布尔盲注,字符型[" ...