19| 海底高铁

一、核心思路

行程是从 P1、P2...Pk,每一段都会经过若干段铁路。可以利用差分数组来统计每一段铁路(第Pi 段)在整个行程中被经过的总次数。对于每一段铁路Pi,我们可以独立决策是全部买纸质票,还是买一张 IC 卡后每次刷卡。

二·、代码实现

cpp 复制代码
typedef long long LL;
const int N = 1e6;
int n, m;
LL f[N];
int x, y;
int main ()
{
	cin >> n >> m;
	// 构建差分数组 
	cin >> x; // 起始城市
	for (int i = 2; i <= m; i++)
	{
		cin >> y;
		if (x > y) 
		{
			f[x]--;
			f[y]++;
		}
		else
		{
			f[x]++;
			f[y]--;
		}
		x = y;
	 } 
	 //  前缀和还原原始数组表示各段城市间链路经过的次数
	 for (int i = 1; i <= n; i++) f[i] += f[i-1];
	 LL ret = 0;
	 for (int i = 1; i < n; i++)
	 {
	 	int a, b, c; cin >> a >> b >> c;
	 	ret += min(f[i] * a, c + b * f[i]);
	  } 
	cout << ret;
	return 0;
}
相关推荐
Asa121384 分钟前
Nature Microbiology|跨微生物界菌株水平传播推断的新算法TRACS
算法
_君莫笑6 分钟前
Qt+Qml前后端分离上位机软件技术方案
c++·qt·用户界面·qml
爱喝水的鱼丶11 分钟前
SAP-ABAP:ABAP Development Tools(ADT)安装配置学习分享教程(四篇连载) 第三篇:ADT常用开发插件与个性化配置教程
数据库·学习·sap·abap
前端小马16 分钟前
PTE考试笔记
笔记·英语
叼烟扛炮17 分钟前
C++ 知识点22 函数模板
开发语言·c++·算法·函数模版
GHL28427109019 分钟前
python通过API调用Coze智能体学习
学习·ai
Tisfy21 分钟前
LeetCode 2553.分割数组中数字的数位:模拟(maybe+翻转)——java也O(1)
java·数学·算法·leetcode·题解·模拟·取模
平行侠25 分钟前
33水库抽样 - 从未知大小的流中等概率采样
数据结构·算法
Jackyzhe30 分钟前
从零学习Kafka:生产者压缩
分布式·学习·kafka
吴声子夜歌33 分钟前
Java——Integer与二进制算法
java·算法