这题挺有意思哈!!!看别人写的博客,感觉瞬间就懂了。

这道题大概题意就是,给一串序列,我们要查找到l-r区间内,满足min(a[ i ],a[ j ]) = gcd(a[ i ],a[ j ])

其实我们把这个东西看成一个二元组,<i,j> 二元组满足 min(a[ i ],a[ j ]) = gcd(a[ i ],a[ j ])

为了保证唯一性,<i,j>二元组满足i<j ,min(a[ i ],a[ j ]) = gcd(a[ i ],a[ j ])

由于是排列,我们可以枚举所有的满足条件的<i,j>,并且保证二元组唯一。

这样我们就转换为一个二维偏序问题。

对于询问<l,r>我们需要回答满足条件的二元组<i,j> 满足 l<=i 且 j<=r 的二元组的组数。

那我们把询问全部离线并加入修改操作,然后排序第一维度的r,保证r的有序,对于r相同的修改和询问,先进行修改

(因为先要生成序列,询问实际上是后面进行的),维护了r后,保证了树状数组里面<i,j> j<=r,然后查询>=l的个数。

查询query(n)-query(l-1)即可,注意如果是l==1的话,避免树状数组超时直接查query(n)。就实现了二维偏序的查询。

#include<bits/stdc++.h>
using namespace std;
const int maxx = 1e6+;
struct node{
int l,r,id;
bool operator < (const node &s) const {
if (r==s.r){
return id<s.id;
}
return r<s.r;
}
}q[*maxx];
int ans[maxx];
int pos[maxx];
int tot,n;
int sum[maxx];
int lowbit(int x){
return x&(-x);
}
void add(int x,int w){
for(int i=x;i<=n;i+=lowbit(i)){
sum[i]+=w;
}
}
int query(int x){
int s=;
for (int i=x;i;i-=lowbit(i)){
s+=sum[i];
}
return s;
}
int main(){
int m;
scanf("%d%d",&n,&m);
tot=;
memset(ans,,sizeof(ans));
memset(pos,,sizeof(pos));
memset(sum,,sizeof(sum));
int tmp;
for (int i=;i<=n;i++){
scanf("%d",&tmp);
pos[tmp]=i;
}
for (int i=;i<=n;i++){
for (int j=;i*j<=n;j++){
q[++tot]=node{min(pos[i],pos[i*j]),max(pos[i],pos[i*j]),};
}
}
int l,r;
for (int i=;i<=m;i++){
scanf("%d%d",&l,&r);
q[++tot]=node{l,r,i};
}
sort(q+,q++tot);
for (int i=;i<=tot;i++){
if (q[i].id==){
add(q[i].l,);
}else {
if (q[i].l==){
ans[q[i].id]=query(n);
}else{
ans[q[i].id]=query(n)-query(q[i].l-);
}
}
}
for (int i=; i<=m; i++)
{
printf("%d\n",ans[i]);
}
return ;
}

2019徐州网络赛 I.query的更多相关文章

  1. ICPC 2019 徐州网络赛

    ICPC 2019 徐州网络赛 比赛时间:2019.9.7 比赛链接:The Preliminary Contest for ICPC Asia Xuzhou 2019 赛后的经验总结 // 比赛完才 ...

  2. query 2019徐州网络赛(树状数组)

    query \[ Time Limit: 2000 ms \quad Memory Limit: 262144 kB \] 题意 补题才发现比赛的时候读了一个假题意.... 给出长度为 \(n\) 的 ...

  3. 【树状数组】2019徐州网络赛 query

    (2)首先成倍数对的数量是nlogn级别的,考虑每一对[xL,xR](下标的位置,xL < xR)会对那些询问做出贡献,如果qL <= xL && qR >= xR, ...

  4. 2019徐州网络赛 I J M

    I. query 比赛时候没有预处理因子疯狂t,其实预处理出来因子是\(O(nlog(n))\)级别的 每个数和他的因子是一对偏序关系,因此询问转化为(l,r)区间每个数的因子在区间(l,r)的个数 ...

  5. 2019徐州网络赛 H.function

    题意: 先有\(n=p_1^{k_1}p_2^{k_2}\cdots p_m^{k_m}\),定义\(f(n)=k_1+k_2+\cdots+k_m\). 现在计算 \[ \sum_{i=1}^nf( ...

  6. 2019徐州网络赛H :function (min25筛)

    题意:f(i)=i的幂次之和. 求(N+1-i)*f(i)之和. 思路:可以推论得对于一个素数p^k,其贡献是ans=(N+1)[N/(P^k)]+P^k(1+2+3...N/(P^k)); 我们分两 ...

  7. [2019徐州网络赛J题]Random Access Iterator

    题目链接 大致题意:从根节点出发,在节点x有son[x]次等概率进入儿子节点,求到达最深深度的概率.son[x]为x节点的儿子节点个数. 又又又又没做出来,心态崩了. 下来看了官方题解后发觉自己大体思 ...

  8. 2019 徐州网络赛 center

    题意:n个点,求最小加上几个点让所有点关于一个点(不需要是点集里面的点)中心对称 题解:双重循环枚举,把中点记录一下,结果是n-最大的中点 #include <bits/stdc++.h> ...

  9. 2019 徐州网络赛 G Colorful String 回文树

    题目链接:https://nanti.jisuanke.com/t/41389 The value of a string sss is equal to the number of differen ...

随机推荐

  1. 个人站长建议直接封掉的IP地址列表

    <Valve className="org.apache.catalina.valves.RemoteAddrValve" deny="164.100.196.21 ...

  2. python基础--反射、元类、单例设计模式

    反射:reflect,反射指的是一个对象应该具备可以检测.修改.增加自身属性的能力,反射就是通过字符串操作属性 hasattr(对象,带查询的属性名称) 判断某个对象中是否存在某个属性 getattr ...

  3. 洛谷P1263 宫廷守卫

    P1263 宫廷守卫 题目描述 从前有一个王国,这个王国的城堡是一个矩形,被分为M×N个方格.一些方格是墙,而另一些是空地.这个王国的国王在城堡里设了一些陷阱,每个陷阱占据一块空地. 一天,国王决定在 ...

  4. SQL Sever实验一 创建和删除数据库数据表

    一. 实验目的 1. 熟悉SQL    Server    2008    中SQL    Server    Management    Studio的环境 2. 了解SQL    Server   ...

  5. Django项目:CRM(客户关系管理系统)--16--08PerfectCRM实现King_admin显示注册表的字段表头

    # king_urls.py # ————————02PerfectCRM创建ADMIN页面———————— from django.conf.urls import url from king_ad ...

  6. Excel怎么增加撤销操作的次数?Excel增加可撤销次数教程

    Excel怎么增加撤销操作的次数?Excel增加可撤销次数教程 在Excel的使用中,返回上一步是经常用到的一个工具,当数据填写有误需要查看之前的内容时,一般会通过"Ctrl Z" ...

  7. hive拉链表取数

    例如,一个借款用户在hive上的拉链表.(end_dt存放逻辑与普通介绍的拉链表不一致) 需要拉去它在2019-05-01日的状态, 取数逻辑是: select * from tb where sta ...

  8. 每日算法之三十四:Multiply Strings

    大数相乘,分别都是用字符串表示的两个大数.求相乘之后的结果表示. 首先我们应该考虑一下測试用例会有哪些,先准备測试用例对防御性编程会有比較大的帮助.可以考虑一些极端情况.有以下几种用例: 1)&quo ...

  9. 【难为听】weex-ui

    eslint 不喜欢,但是确实规范了代码,同古代统一货币一样,有无穷的意义.故喜欢 weex-ui在项目中的使用方法 npm install -g weex-toolkit@latest weex c ...

  10. Linux与Unix shell编程指南(完整高清版).pdf

    找到一本很详细的Linux Shell脚本教程,其实里面不光讲了Shell脚本编程,还介绍了系统的各种命令 http://vdisk.weibo.com/s/yVBlEojGMQMpv 本书共分五部分 ...