CF-567C - Geometric Progression

来源:互联网 发布:网络语gg是什么意思 编辑:程序博客网 时间:2024/05/18 04:29
<span style="font-size: 1em; line-height: 1.4em; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; background-color: rgb(255, 255, 255);">这道题,我用一个结构体储存数值和位置,然后二次排序</span>

我最初的时候枚举起点x,然后二分查找数值为x*k区间中的位置位于x之后的区间,然后在枚举区间的y(=x*k),用二分再求出y*k切在其之后的区间

这样写时间会t

后面发现枚举起点效率低,没有枚举中点效率高,因为枚举中点一可以剔除x%k!=0的

并且可以在lgn的时间内 查找到x/k和x*k的区间长度

#include<iostream>#include<algorithm>using namespace std;const int maxn=2e5+100;long long n,k,ans;struct node{    long long num;    int pos;    node(long long num,int pos):num(num),pos(pos){}    node():num(0),pos(0){    }     bool operator < (const node& rhy)const{        return num<rhy.num||(num==rhy.num&&pos<rhy.pos);    }}a[maxn];long long findcnt(long long x,int s,int e){        return upper_bound(a,a+n,node(x,e-1))-lower_bound(a,a+n,node(x,s+1));}int main(){    cin>>n>>k;    for(int i=0;i<n;i++){        cin>>a[i].num;        a[i].pos=i;    }    ans=0;    sort(a,a+n);    if(n>=3){        for(int i=0;i<n;i++){            long long num=a[i].num;            int pos=a[i].pos;            if(num%k==0)                ans+=findcnt(num/k,-1,pos)*findcnt(num*k,pos,n+1);        }    }    cout<<ans<<endl;    return 0;}


看别人代码发现更加机智的写法,用两个map分别记录下第i位之前和之后的每个数字出现次数

然后~~~~~


 map<int,int> s, t;        rep(i, n) ++ t[a[i]];        ll ans = 0;        rep(i, n) {            int x = a[i];            -- t[x];            if(x % k == 0 && abs((ll)x * k) <= (ll)1e9)                ans += (ll)s[x / k] * t[x * k];            ++ s[x];        }



0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 全切双眼皮留疤怎么办 开内眼角留疤了怎么办 开眼角长了颗粒怎么办 开刀后疤痕庝痛怎么办 眼角开得太尖了怎么办 眼角开得太大了怎么办 开眼角后增生了怎么办 下颌骨宽怎么办不整容 脸两边骨头太宽怎么办 接了睫毛眼睛疼怎么办 下颌骨错位脸歪怎么办 假体隆鼻感冒了怎么办 打了玻尿酸怀孕怎么办 鼻子上有出血点怎么办 内眼角开小了怎么办 上眼皮肿怎么办小妙招 嫁接的睫毛乱了怎么办 睫毛掉进眼睛里怎么办 痘痘留下的疤痕怎么办 宫颈癌前病变1级怎么办 纹身后结痂很厚怎么办 纹身结痂蹭掉了怎么办 药流20天同房了怎么办 药流23天同房了怎么办 小产后不来月经怎么办 人流12天同房了怎么办 人流20天同房了怎么办 人流后5天同房了怎么办 人流后3天同房了怎么办 人流20后同房了怎么办 上环后月经量多怎么办 上环后喝啤酒了怎么办 取环当天同房了怎么办 生完孩子有外痔怎么办 怀孕了宫腔积液怎么办 做完爱4天怕怀孕怎么办 半永久眉失败了怎么办 取环前2天同房了怎么办 怀孕了发现有子宫肌瘤怎么办 宫腔中央性粘连怎么办 孕妇宫腔粘连带怎么办