首页 > 其他分享 >F. Sum of Progression

F. Sum of Progression

时间:2024-01-25 13:44:53浏览次数:21  
标签:Progression int Sum cin sqrt step ll

原题链接

题解

关键要素:两次后缀和预处理\(d < \sqrt{n}\)的情况,当\(d\)大于\(\sqrt{n}\)时,直接暴力,总时间复杂度为\(O(n\sqrt{n})\)
代码比讲述要清晰,请直接看代码

code

#include<bits/stdc++.h>
#define ll long long
using namespace std;
ll a[100005]={0};
ll sufs1[100335][330]={0};//由于i+step,左边要留出足够大的空间
ll sufs2[100335][330]={0};
int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    int t;
    cin>>t;
    while(t--)
    {
        ll n,q;
        cin>>n>>q;
        ll maxd=sqrt(n);
        for(ll i=1;i<=n+maxd;i++)
            for(ll j=1;j<=maxd;j++)sufs1[i][j]=sufs2[i][j]=0;
        for(ll i=1;i<=n;i++)cin>>a[i];

        for(ll i=n;i>=1;i--)
            for(int step=1;step<=maxd;step++)
                {
                    sufs1[i][step]=sufs1[i+step][step]+a[i];//为什么要i+step,因为当前节点可能是某个step的头节点
                    sufs2[i][step]=sufs2[i+step][step]+sufs1[i][step];
                }

        while(q--)
        {
            ll start,step,num;
            cin>>start>>step>>num;
            if(step<maxd)
                cout<<sufs2[start][step]-sufs2[start+num*step][step]-num*sufs1[start+num*step][step]<<" ";//利用后缀和
            else
            {
                ll ans=0;
                for(int i=0;i<num;i++)
                    ans+=a[start+i*step]*(i+1);
                cout<<ans<<" ";
            }
        }
        cout<<endl;
    }
    return 0;
}


标签:Progression,int,Sum,cin,sqrt,step,ll
From: https://www.cnblogs.com/pure4knowledge/p/17986977

相关文章

  • Allure报告 03-报告Summary
    1.钩子:pytest_terminal_summary执行完测试用例后,需要对结果进行汇总,用例总数,失败用例数,成功用例数等。pytest有自带的一个钩子函数:pytest_terminal_summary,查看官方文档。#conftest.pydefpytest_terminal_summary(terminalreporter,exitstatus,config):""":......
  • Prometheus最佳实践 Summary和Histogram
    本文分享自华为云社区《Prometheus最佳实践Summary和Histogram》,作者:张俭。前言Histogram和Summary都是复杂的指标,不仅仅是因为直方图和summary包含了多个时间序列,而且它们还较难使用正确。观测中的Count和SumHisto和summary都是采样观测,典型的采样维度有 响应大小 和 ......
  • PostMappering中consumes与produces属性的作用
     哈喽大家好今天跟大家简单聊一聊PostMappering中consumers与produces两个属性的作用在对接接口中,对方API要求,请求头HTTPHeader中设置Content-Type为application/x-www-form-urlencoded,响应头HTTPHeader中Content-Type为application/json。也就是说一个接口中,接收......
  • [ARC155C] Even Sum Triplet 题解
    一道大分类讨论。如果有一个可以交换的段包含奇数,那么你可以把所有奇数移到最左边并任意调整相对顺序,然后回到任意一种有一个可以交换的段包含奇数的状态。这种情况,如果偶数的数量为\(2\),这两个偶数是不能交换相对位置的,有至少\(3\)个偶数就能交换偶数间相对位置。所以只需要......
  • B - Arithmetic Progression Subsequence
    B-ArithmeticProgressionSubsequenceProblemStatementYouaregivenasequence$A$oflength$N$consistingofintegersbetween$1$and$\textbf{10}$,inclusive.Apairofintegers$(l,r)$satisfying$1\leql\leqr\leqN$iscalledagoodpairif......
  • HarmonyOS4.0系列——05、状态管理之@Prop、@Link、@Provide、@Consume,以及@Watch装饰
    状态管理看下面这张图Components部分的装饰器为组件级别的状态管理,Application部分为应用的状态管理。开发者可以通过@StorageLink/@LocalStorageLink实现应用和组件状态的双向同步,通过@StorageProp/@LocalStorageProp实现应用和组件状态的单向同步。@PropstaticProp(propName:......
  • CF1612G Max Sum Array
    MaxSumArrayLuoguCF1612G题面描述给定一个长为\(m\)的序列\(c_1,c_2,\dots,c_m\)。序列\(A\)满足:对于所有\(1\leqi\leqm\),\(i\)在\(A\)中出现了\(c_i\)次。定义一个序列\(A\)的值如下:\[f(A)=\sum_{1\leqi<j\leqn,a_i=a_j}j-i\]求满足条件的\(f......
  • Petrozavodsk Summer 2019. Day 9. MEX Foundation Contest【杂题】
    比赛链接A.TheOnePolynomialMan给定模数\(p\)和\(0\simp-1\)的两个集合\(U,V\),求有多少个有序对\((a,b)\)满足:\(f(a,b)=\prod\limits_{z\inV}\left(\frac{(2a+3b)^2+5a^2}{(3a+b)^2}+\frac{(2a+5b)^2+3b^2}{(3a+2b)^2}-z\right)\equiv0\pmo......
  • D - Summer Vacation
    D-SummerVacation题意:有n个任务,每一天可以选择一个未完成的任务i来完成,并在ai天后获得bi的利益。问在m天内最多可以获得多少利益。首先我们可以考虑假如i,j两个任务都在我们最后的答案里面,那么让a比较大的排在前面一定是更好的。所以我们先按照a降序排序。然后用一个set维护......
  • PBK's sum of LCM
    \[\sum\limits_{i=1}^N\sum\limits_{j=1}^M\frac{a_ia_j}{\gcd(a_i,a_j)}\]\[\sum\limits_{d=1}^\infty\frac1d\sum\limits_{i=1}^N\sum\limits_{j=1}^Ma_ia_j[\gcd(a_i,a_j)=d]\]\[\sum\limits_{d=1}^\infty\frac1d\sum\limits_{i=1}^Na_i\......