求助
查看原帖
求助
959024
CQ天神楼主2024/8/26 14:29
#include <bits/stdc++.h>
const int maxn=2*100000+5;
using namespace std;
int n,m,sum,a[maxn],x[maxn],y[maxn],k[maxn];
bool flag=false;
signed main(){
	cin>>n>>m;
	for(int i=1;i<=n;i++) cin>>a[i];
	for(int i=1;i<=m;i++) cin>>x[i]>>y[i]>>k[i];
	for(int i=1;i<=m;i++) if(k[i]==k[i-1]) flag=true; else flag=false;
	if(flag==true){
		if(k[1]==1){
			int temp1=0;
			for(int i=1;i<=m;i++) temp1=max(x[i],temp1);
			sum=a[temp1];
		}else{
			for(int i=1;i<=m;){
				if(x[i]>x[i+1]&&y[i]<y[i+1]){
					sum+=a[x[i]]*k[i]+a[y[i]]*(k[i]-1);
					i+=2;
				}else{
					sum+=a[x[i]]*k[i]+a[y[i]]*(k[i]-1);
					i++;
				}
			}
		}
	}else{
		for(int i=1;i<=m;i++){
			if(k[i]==1) continue;
			else sum+=a[x[i]]*k[i]+a[y[i]]*(k[i]-1);
		}
	}
	cout<<sum<<endl;
	return 0;
}
2024/8/26 14:29
加载中...