列表

详情


NC19798. 区间权值

描述

小 Bo 有 n 个正整数 a1..an,以及一个权值序列 w1…wn,现在他定义
现在他想知道 的值,需要你来帮帮他
你只需要输出答案对 109+7 取模后的值

输入描述

第一行一个正整数 n
第二行 n 个正整数 a1..an
第三行 n 个正整数 w1..wn

输出描述

输出答案对 109+7 取模后的值

示例1

输入:

3
1 1 1
1 1 1

输出:

10

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C++(g++ 7.5.0) 解法, 执行用时: 247ms, 内存消耗: 8404K, 提交时间: 2022-10-14 20:57:45

#include<bits/stdc++.h>
using namespace std;
int a[300001];
int b[300001];
int a1[300001];
int mod=1e9+7;
long long sum=0;
int main()
{
	int n;
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		cin>>a[i];	
		a1[i]=(a1[i-1]+a[i])%mod;
	}
	for(int i=1;i<=n;i++)cin>>b[i];
	long long dp=0;
	for(int l=1;l<=n;l++)
	{
		int temp;
		dp=(dp+a1[n-l+1]-a1[l-1]+mod)%mod;
		temp=dp*b[l]%mod;
		sum=(sum+temp)%mod;
	}
	cout<<sum<<endl;
}

C 解法, 执行用时: 103ms, 内存消耗: 5124K, 提交时间: 2022-12-13 21:42:31

#include <stdio.h>
const int mod=1e9+7;
int n;
long long f=0,a[300010],w[300010],b[300010];
int main()
{
	int i,j;
	
	scanf("%d",&n);
	for(i=1;i<=n;i++)
	{
		scanf("%lld",&a[i]);
		a[i]=(a[i]+a[i-1])%mod;
	}
	for(i=1;i<=n;i++)
	{
		scanf("%lld",&w[i]);
		w[i]=(w[i]+w[i-1])%mod;
	}
	
	 for(i=1;i<=n;i++)
	 {
	 	f=(f+a[i]*w[i]-a[i-1]*w[n-i+1])%mod;
	 }
	 f=(f+mod)%mod;
	 printf("%lld",f);
	 return 0;
} 

C++(clang++ 11.0.1) 解法, 执行用时: 165ms, 内存消耗: 2728K, 提交时间: 2022-08-02 11:03:21

#include<bits/stdc++.h>
#define LL long long
using namespace std;
const int M=1e9+7,N=3e5+7;
LL n,x;
LL a[N];
int main()
{
	cin>>n; 
	for(int i=1;i<=n;i++)
	{
		cin>>a[i];
		a[i]=(a[i]+a[i-1])%M;
	}
	LL ans=0,sum=0;
	for(int i=1;i<=n;i++)
	{
		cin>>x;
		sum=(sum+a[n-i+1]-a[i-1]+M)%M;
		ans=(ans+sum*x)%M;
	}
        cout<<ans<<endl;
	return 0;
}

Pascal(fpc 3.0.2) 解法, 执行用时: 115ms, 内存消耗: 3680K, 提交时间: 2018-10-05 08:59:49

const m=1000000007;
var
w,s,a:array[1..5000000]of longint;
i,j,k,n:longint;
sum,ans:int64;
begin
 readln(n);
 for i:=1 to n do
 begin
  read(a[i]);
  s[i]:=(s[i-1]+a[i])mod m;
  end;
  for i:=1 to n do
   read(w[i]);
for i:=1 to n do
begin
 sum:=(sum+(s[n-i+1]-s[i-1]+m)mod m)mod m;
 ans:=(ans+sum*w[i] mod m) mod m;
end;
 writeln(ans);
end.

上一题