当前位置: 首页 > news >正文

题解:P1073 [NOIP 2009 提高组] 最优贸易

题目传送门

绝世好题
让我学会了分层图的真正用法
以前都只会自作聪明地分两层:
美其名曰【正图】【反图】
现在知道了还有这种神奇的建图方法!


理解题意:

有向图
给定起点终点
求路径上两点买卖东西最大收益

思路:

考虑建分层图

所以此时问题从二维图s->t
转化为了
三维图(分层图)中的s->t3

我们对于层之间的边怎么操作呢?
其实每层对应着不同的状态

  • 第一层对应没有买入
  • 第二层对应已经买入
  • 第三层对应已经卖出
    从第一层到第二层的边就是 -v ,负的价格,表示此时买入
    从第二层到第三层的边就是 v ,正的价格,表示此事卖出
    而我们让同一层之间的边的权值为 0 , 仅仅只检测连通性就好了
    建图建完(最繁重的工作)那么我们只需要跑一边SPFA求出第一层的起点到第三层的终点
    (经历了一次买入和一次卖出的路径)
    就解决了这个问题

\(\mathbb {CODE}\)

#include <bits/stdc++.h>
using namespace std;const int N = 1e5 + 10;int n, m;
int dis[N * 3], vis[N * 3];
vector<pair<int, int> > e[N * 3];void add(int u, int v)
{e[u].push_back({v, 0});e[u + n].push_back({v + n, 0});e[u + n + n].push_back({v + n + n, 0});
}void solve()
{memset(dis, -0x3f, sizeof dis);queue<int> q;q.push(1);vis[1] = 1;dis[1] = 0;while (!q.empty()) {int u = q.front();q.pop();vis[u] = 0;for (auto t : e[u]) {int v = t.first, w = t.second;if (dis[v] < dis[u] + w) {dis[v] = dis[u] + w;if (!vis[v]) {q.push(v);vis[v] = 1;}}}}
}int main()
{ios::sync_with_stdio(false);cin.tie(nullptr);cout.tie(nullptr);cin >> n >> m;for (int i = 1; i <= n; i++) {int price;cin >> price;e[i].push_back({i + n, -price});e[i + n].push_back({i + n + n, price});}for (int i = 1; i <= m; i++) {int u, v, id;cin >> u >> v >> id;add(u, v);if (id ^ 1)add(v, u);}solve();cout << dis[n * 3] << endl;return 0;
}
http://www.jsqmd.com/news/16915/

相关文章:

  • 吩咐
  • 互评五
  • 机器人技术新前沿:自动驾驶路径规划算法解析
  • 前端框架文档新思路:基于源码解析的自动化方案
  • tryhackme-预安全-网络基础知识-数据包和帧-07
  • Agilent E363x 系列
  • 嗣澳——扫,墨依奥——描,希伊桉——线
  • 迈向零信任存储:基于RustFS构建内生安全的数据架构
  • 如果这就是人类脑海的话 雪白纸上划出血红层层痕迹 不如杀死这些记忆
  • 服务器被攻击!原因竟然是他?真没想到...
  • ChatGPT From Zero To Hero - LLM学习笔记(一) - 详解
  • 基于Java+SSM+Django数字工坊课程教学网站(源码+LW+调试文档+讲解等)/数字工坊/课程教学/网站链接/在线课程/学习资源/视频教程/教育平台/数字艺术/学习网站/课程资料/ - 详解
  • 框架架构的多维赋能——论其对自然语言处理深层语义分析的影响与启示
  • 路径规划算法学习Day1:深度优先搜索算法(DFS)
  • 深入理解 Java和Go语法和使用场景(指南十一) - 指南
  • .seq 是 TestStand Sequence File(测试序列文件) 的扩展名。
  • 使用 robocopy 命令备份还原数据速度统计
  • 顺天地之自然
  • 第2章 人工智能项目的核心特征与挑战
  • 深入解析:【办公类-115-04】20250920职称资料上传03——压缩课题结题报告PDF的大小(控制在200MB以内)
  • Mac 打开终端方式
  • 《青云志》
  • 树状数组和线段树基础
  • 详细介绍:Vue Router路由
  • AVR 单片机批量编程脚本(.bat)
  • PWN手的成长之路-20-cgpwn2
  • C++ofstream写文件bug
  • Debian13中使用Virtual-box安装Window10虚拟机并设置USB直通
  • 2024长城杯决赛-溯源取证1
  • [Agent] ACE(Agentic Context Engineering)和Dynamic Cheatsheet学习笔记