gym 102299 problem A Kolkhozy(暴力优化)

链接

题意:

有n个数,询问格式: l r x mod,对于区间[l,r]中的一个位置k,如果k%mod == x,那么就有1的贡献,否则就是0的贡献,求区间的贡献和。



思路:

容易发现当mod很大的时候需要计算的点就会越来越稀疏,从数据的范围来看只需要进行常数级别的优化就可以了。总体思想是当mod很小时,直接暴力枚举,当mod比较大时则每次步长改为mod,初始的位置为x。利用前缀和可以进一步优化,先记录所有的询问,假如询问区间[l,r],在前缀和中只需要sum[r]-sum[l-1]即可。利用这个原理,给每个询问打上标记,l-1的位置插入一个-1的点,r的位置插入一个1的点。再用一个二维数组 p [ i ] [ j ] p[i][j] p[i][j]表示mod=i时余数为j的前缀和。然后从左往右枚举位置,对于每个位置都要暴力统计做mod比较小时的情况,加入到前缀和中。然后再枚举在这个位置插入的那些点了,在分下情况就可以解决了。mod怎么算比较小呢,自己算着差不多取个上界就好了。



参考代码:
#include <bits/stdc++.h>
using namespace std;
const int N=5e4+5;
int a[N];
struct node{
    int x,d,id,p;
    node(){}
    node(int x,int d,int id,int p){
        this->x=x;
        this->d=d;
        this->id=id;
        this->p=p;
    }
};

int p[405][405];
int mp[N],ans[N];
vector<node>v[N];

int main(){
    int n,m;
    scanf("%d%d",&n,&m);
    for(int i=1;i<=n;i++){
        scanf("%d",&a[i]);
    }
    int l,r,x,d;
    for(int i=1;i<=m;i++){
        scanf("%d%d%d%d",&l,&r,&x,&d);
        v[l-1].push_back(node(x,d,i,-1));//前缀和的思想val[l,r]=sum[r]-sum[l-1]
        v[r].push_back(node(x,d,i,1));
    }
    int mx=400;//小于等于400暴力
    for(int i=1;i<=n;i++){
        for(int j=1;j<=mx;j++){
            p[j][a[i]%j]++;//统计前缀和
        }
        mp[a[i]]++;//统计a[i]出现的次数,mod>400时计算需要用确切的数字
        for(node t:v[i]){
            if(t.d<=mx){//mod较小,直接计算
                ans[t.id]+=t.p*p[t.d][t.x];
            }
            else{//mod较大,枚举统计
                for(int k=t.x;k<=50000;k+=t.d){
                    ans[t.id]+=t.p*mp[k];
                }
            }
        }
    }
    for(int i=1;i<=m;i++){
        printf("%d\n",ans[i]);
    }
    return 0;
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
自2020年以来,自动驾驶汽车(Autonomous Vehicle)在这一领域取得了显著进展。 自动驾驶汽车通过使用先进的传感技术,如雷达、激光雷达和摄像头,以及深度学习和人工智能算法,实现了车辆的自主驾驶。它们能够感知周围环境,了解道路状况,并做出相应的决策和行驶动作,从而实现无需人类操控的车辆行驶。 自动驾驶汽车在2020年迅速崭露头角。它们的技术日益成熟,不断的实验和测试表明其在安全性和性能方面已经取得了显著的突破。虽然仍然存在一些挑战,比如在复杂城市环境中导航和处理紧急情况,但这些问题正经过不断的研究和改进来得以解决。 在未来,自动驾驶汽车有望在各个领域发挥重要作用。首先,它们将可以提高道路交通的安全性。由于自动驾驶车辆不受人类司机的疲劳、分心和驾驶误差的限制,它们的驾驶能力更为稳定和准确。其次,自动驾驶汽车还能够提高交通效率。通过与其他车辆实时通信和协同,它们可以避免交通堵塞和减少事故发生,从而减少交通拥堵和行车时间成本。 此外,自动驾驶汽车也将为交通出行带来便利和舒适性。乘客可以更轻松地进行其他活动,如工作、休息或娱乐,而不必担心驾驶问题。老年人和残障人士也将能够自由独立地出行,提高他们的生活质量。 综上所述,作为2020年的重要趋势,自动驾驶汽车具有广阔的应用前景。通过不断的创新和发展,它们将在道路交通安全、交通效率和出行体验方面取得进一步的提升。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值