为什么要先把P[1]输进来,而不是正常处理,难道第一次路程不算吗?
#include<bits/stdc++.h>
using namespace std;
const int N = 1e5 + 10;
#define int long long
int num[N],a[N],b[N],c[N],p[N],t[N];
bool buy[N];
int n,m,ans;
signed main(){
cin >> n >> m;
p[0] = 1;
cin >> p[1];
for(int i = 2;i <= m;i++){
cin >> p[i];
if(p[i] > p[i - 1]){
num[p[i]] --;
num[p[i - 1]] ++;
}
else{
num[p[i - 1]] --;
num[p[i]] ++;
}
}
for(int i = 1;i < n;i++){
cin >> a[i] >> b[i] >> c[i];
}
for(int i = 1;i < n;i++)
num[i] = num[i - 1] + num[i];
for(int i = 1;i < n;i++){
if(num[i] * a[i] >= num[i] * b[i] + c[i])buy[i] = true;
//cout << num[i] << " \n"[i == n-1];
//cout << buy[i] << " ";
}
for(int i = 1;i < n;i++){
if(buy[i]){
ans += num[i] * b[i] + c[i];
}
else{
ans += num[i] * a[i];
}
}
cout << ans << "\n";
return 0;
}