关于数据范围的疑问
查看原帖
关于数据范围的疑问
60925
KKKZOZ楼主2022/11/14 14:53

题干中说明,对于所有评测用例, 1n2×1051\leq n\leq2\times10^5, 1ai10001 \leq a_i \leq 1000

那么对于前缀和数组来说,int类型的前缀和数组应该够用了吧,毕竟最大数据的和最大才2×1082\times10^8 但是实际提交却过不了

这是为啥

错误代码

#include<bits/stdc++.h>
using namespace std;
int n,nums[200010],sum[200010];
long long tot;
int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    cin >> n;
    for(int i=1;i<=n;i++){
        cin>>nums[i];
        sum[i]=sum[i-1]+nums[i];
    }


    for(int i=1;i<=n;i++){
        tot+=nums[i]*(sum[n]-sum[i]);
    }
    cout<<tot<<endl;
    return 0;
}

正确代码

#include<bits/stdc++.h>
using namespace std;
int n,nums[200010];
long long sum[200010];
long long tot;
int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    cin >> n;
    for(int i=1;i<=n;i++){
        cin>>nums[i];
        sum[i]=sum[i-1]+nums[i];
    }


    for(int i=1;i<=n;i++){
        tot+=nums[i]*(sum[n]-sum[i]);
    }
    cout<<tot<<endl;
    return 0;
}
2022/11/14 14:53
加载中...