• CF103D Time to Raid Cowavans(分块)


    套路题,对于步长大于根号n的,直接暴力做,对于步长小于根号n的,保留离线后

    对于每个步长for一遍,这样复杂度也是n*根号n

    #include<bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    typedef pair<int,int> pll;
    const int N=5e5+10;
    const int mod=1e9+7;
    ll sum[N];
    ll a[N];
    vector<pll> num[N];
    ll ans[N];
    int main(){
        //ios::sync_with_stdio(false);
        int n;
        cin>>n;
        int block=sqrt(n);
        int i;
        for(i=1;i<=n;i++){
            scanf("%lld",&a[i]);
        }
        int m;
        cin>>m;
        for(i=1;i<=m;i++){
            int x,y;
            scanf("%d%d",&x,&y);
            if(y>block){
                for(int j=x;j<=n;j+=y){
                    ans[i]+=a[j];//步长大的直接暴力
                }
            }
            else{
                num[y].push_back({i,x});
            }
        }
        for(i=1;i<=block;i++){//不超过nsqrt(n)
            if(num[i].size()){
                for(int j=n;j>=1;j--){
                    sum[j]=(j+i>n?0:sum[i+j])+a[j];
                }
                for(auto x:num[i]){
                    ans[x.first]=sum[x.second];
                }
            }
        }
        for(i=1;i<=m;i++){
            printf("%lld
    ",ans[i]);
        }
        return 0;
    }
    View Code
    没有人不辛苦,只有人不喊疼
  • 相关阅读:
    ....
    排序相关的问题(jq,java)_1123
    Spring aop 记录操作日志
    vue -element ui 自定义验证规则,封装在公共的文件里
    vue
    ES6 新特性
    正则表达式
    面向对象基础--继承(2)
    面向对象基础(1)
    安装vue环境
  • 原文地址:https://www.cnblogs.com/ctyakwf/p/13874397.html
Copyright © 2020-2023  润新知