30分 前缀和 求助大佬
查看原帖
30分 前缀和 求助大佬
170047
小渣青999楼主2020/8/21 11:34
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;

int a[100010];
int b[100010];
int s[100010];

int main()
{
	int n,m;
	scanf("%d%d",&n,&m);
	for(int i=1;i<=m;i++) scanf("%d",&a[i]);
	for(int i=1;i<m;i++)
	{
		int s=min(a[i],a[i+1]),e=max(a[i],a[i+1]);
		b[s]++;b[e]--;
	//	printf("%d %d %d %d\n",s,e,b[s],b[e]);
	}
	for(int i=1;i<m;i++) s[i]=s[i-1]+b[i];
	//for(int i=1;i<m;i++) printf("%d,%d ",i,s[i]);
	
	long long int ans=0;
	for(int i=1;i<n;i++)	
	{
		int x,y,z;
		scanf("%d%d%d",&x,&y,&z);
		long long int tmp=min(x*s[i],z+y*s[i]); 
	//	printf("%d\n",tmp);
		ans+=tmp;
	
	}
	cout<<ans;
	return 0;

}
2020/8/21 11:34
加载中...