求大佬解释
  • 板块P3406 海底高铁
  • 楼主XYzero
  • 当前回复3
  • 已保存回复3
  • 发布时间2024/2/24 15:27
  • 上次更新2024/2/24 18:09:11
查看原帖
求大佬解释
917025
XYzero楼主2024/2/24 15:27

为什么要先把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;
}
2024/2/24 15:27
加载中...