P8772 [蓝桥杯 2022 省 A] 求和

复制代码
#include<bits/stdc++.h>
using namespace std;
const int N=200005;
int  a[N];
int num[N];
int main(){
	int n;
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		
		cin>>a[i];
		if(i==n)
			num[i]=a[i];
	}

	for(int j=n-1;j>=2;j--)
	{	
		num[j]=num[j+1]+a[j];
		
	}
	
	
	long long sum=0;
	for(int i=1;i<n;i++){
		sum+=a[i]*num[i+1];
	}
	cout<<sum;
	return 0;
	
	
}

简单ac这题两重循环的话会爆,不够时间,用前缀和可以优化到n的一次方,题目中求和的各个项可以提出a1到an这n个公共项,那么剩下的就是a2到an,至an的前缀和,先求出a2到an的前缀和,后面的就是n次运算了,不过存储前缀和的数组要用long以上的整型不然会超出空间,数据每个最大是1000,a2到an个数最多是200000,最大的话应该是200000000去到了10的八次方,看到大的数据值,最好就用大一点的整形,空间一般是够的。

相关推荐
@我漫长的孤独流浪15 分钟前
C算法设计与分析------程序设计代码
数据结构·c++·算法
Filotimo_20 分钟前
3.5 排序算法
数据结构·算法·排序算法
一个努力编程人20 分钟前
机器学习————GBDT算法
人工智能·算法·机器学习
深圳市恒星物联科技有限公司22 分钟前
基于图像识别算法与积水传感器的积水监测预警技术方案
人工智能·算法
liu****22 分钟前
1.反向迭代器实现思路
数据结构·c++·反向迭代器·vector·list
HAPPY酷27 分钟前
C++ 多文件编程:声明、定义与全局变量的“黄金法则”
c++·python·技术美术
小美单片机29 分钟前
Proteus8.9安装保姆级教程
c语言·c++·算法·51单片机·proteus·大一新生
551只玄猫33 分钟前
【高级程序设计 实验报告8】MFC菜单和工具栏
c++·mfc·课程设计·实验报告·高级程序设计
white-persist36 分钟前
【红队渗透】Cobalt Strike(CS)红队详细用法实战手册
java·网络·数据结构·python·算法·安全·web安全
keep intensify38 分钟前
康复训练 3
c++