https://www.luogu.org/problem/show?pid=1073

如果他想在i点卖出,那么就要在从1点出发到i点的路径里找个最便宜的买入,用Bellman-Ford求出这样最便宜的买入价记为minp[i]。他能获得的利润就是price[i]-minp[i]。

但是并不是可以在所有的点都可以卖出,因为他最终要走到N,所以只有在和N联通的点才能卖出。用从N点出发倒着的DFS/BFS记录点i是否能到达N点。

故答案为max{price[i]-minp[i] (i点与N点联通)}

#include <iostream>
#include <vector>
#include <queue>
#define maxn 100005
using namespace std;
const int inf = ;
int n, m, price[maxn];
vector<int> g[maxn], gt[maxn]; int minp[maxn];
bool inque[maxn];
queue<int> q;
void bellman_ford()
{
for (int i = ; i <= n; i++)
minp[i] = inf;
minp[] = price[];
q.push();
inque[] = true;
while (!q.empty())
{
int v = q.front();
q.pop();
inque[v] = false;
for (int i = ; i < g[v].size(); i++)
{
int w = g[v][i];
if (minp[w] > min(minp[v], price[w]))
{
minp[w] = min(minp[v], price[w]);
if (!inque[w])
{
inque[w] = true;
q.push(w);
}
}
}
}
} bool avai[maxn];
void dfs(int v)
{
avai[v] = true;
for (int i = ; i < gt[v].size(); i++)
{
int w = gt[v][i];
if (!avai[w])
dfs(w);
}
} int main()
{
ios::sync_with_stdio(false);
cin >> n >> m;
for (int i = ; i <= n; i++)
cin >> price[i];
int u, v, z;
for (int i = ; i <= m; i++)
{
cin >> u >> v >> z;
g[u].push_back(v);
gt[v].push_back(u);
if (z == )
{
g[v].push_back(u);
gt[u].push_back(v);
}
} bellman_ford();
dfs(n);
int ans = ;
for (int i = ; i <= n; i++)
{
if (avai[i])
ans = max(ans, price[i] - minp[i]);
}
cout << ans << endl;
return ;
}

【NOIP2009提高组】最优贸易的更多相关文章

  1. [NOIP2009提高组]最优贸易

    题目:洛谷P1073.Vijos P1754.codevs1173. 题目大意:有n点m边的图,边分有向和无向.每个点有一个价格,用这个价格可以买入或卖出一个东西.一个人从1出发,要到n,途中可以买入 ...

  2. P1073 [NOIP2009 提高组] 最优贸易 (最短路spfa)

    本题就是在一条1-n的路径上找p,q(先经过p),使得q-p最大. 考虑建正反图,正图上求出d[x],表示1-x的路径经过的节点最小值,反图上则从n开始求出f[x],x-n的最大值,最后枚举断点i,取 ...

  3. 洛谷 P1073 最优贸易 & [NOIP2009提高组](反向最短路)

    传送门 解题思路 很长的题,实际上在一个有向图(点有点权)中求一个从起点1到终点n的路径,使得这条路径上点权最大的点与点权最小的点的差值最大(要求必须从点权较小的点能够走到点权较大的点). ——最短路 ...

  4. [NOIP2009] 提高组 洛谷P1073 最优贸易

    题目描述 C 国有 n 个大城市和 m 条道路,每条道路连接这 n 个城市中的某两个城市.任意两个 城市之间最多只有一条道路直接相连.这 m 条道路中有一部分为单向通行的道路,一部分 为双向通行的道路 ...

  5. Noip2009提高组总结

    Noip2009的题目还是有一定难度的,主要是搜索和最短路都是我的弱项,不检查第一遍下来只做了150分,还是这句话,素质和读题的仔细程度决定了分数.仔细想想,我们化学老师说的话没错,或许题目你都会做, ...

  6. noip2009提高组解题报告

    NOIP2009潜伏者 题目描述 R 国和S 国正陷入战火之中,双方都互派间谍,潜入对方内部,伺机行动. 历尽艰险后,潜伏于 S 国的R 国间谍小C 终于摸清了S 国军用密码的编码规则: 1. S 国 ...

  7. noip2009提高组题解

    NOIP2009题解 T1:潜伏者 题目大意:给出一段密文和破译后的明文,一个字母对应一个密文字母,要求破译一段密文,如果有矛盾或有未出现密文无法破译输出failed,否则输出明文. 思路:纯模拟题 ...

  8. [NOIP2009] 提高组 洛谷P1071 潜伏者

    题目描述 R 国和 S 国正陷入战火之中,双方都互派间谍,潜入对方内部,伺机行动.历尽艰险后,潜伏于 S 国的 R 国间谍小 C 终于摸清了 S 国军用密码的编码规则: 1. S 国军方内部欲发送的原 ...

  9. [NOIP2009] 提高组 洛谷P1074 靶形数独

    题目描述 小城和小华都是热爱数学的好学生,最近,他们不约而同地迷上了数独游戏,好胜的他 们想用数独来一比高低.但普通的数独对他们来说都过于简单了,于是他们向 Z 博士请教, Z 博士拿出了他最近发明的 ...

  10. [NOIP2009] 提高组 洛谷P1072 Hankson 的趣味题

    题目描述 Hanks 博士是 BT (Bio-Tech,生物技术) 领域的知名专家,他的儿子名叫 Hankson.现 在,刚刚放学回家的 Hankson 正在思考一个有趣的问题. 今天在课堂上,老师讲 ...

随机推荐

  1. Python Web框架篇:Django Form组件

    Form简介 在HTTP中,表单(form标签),是用来提交数据的,其action属性说明了其传输数据的方法:如何传.如何接收. 访问网站时,表单可以实现客户端与服务器之间的通信.例如查询,就用到了表 ...

  2. 无阻赛的脚本(js脚本延迟方法)

    js脚本的加载与执行 1.延迟脚本(defer属性) 带有defer属性的script标签,可以放置在文档的任何位置,在页面解析到该标签时,会开始下载该脚本,但是不会立即执行,直到dom加载完成(on ...

  3. phpstorm php $post数据为空的原因

    今天拿PHPstoem 写了个PHP的表单插入数据,然后直接在里面一运行,就一直提示什么未定义,其实是因为$_PSOT[] 取不到值. 后面发现原来是直接用phpstorm 运行PHP的话,他会自带端 ...

  4. An explicit value for the identity column in table can only be specified when a column list is used and IDENTITY_INSERT is ON

    If you run into the following error message: An explicit value for the identity column in table '< ...

  5. day2--课前考试题

    Linux 系统命令操作语法的格式: 命令        [参数选项]          [文件或路径] rm                      -f                      ...

  6. RestSharp使用总结

    RestSharp是一个轻量的,不依赖任何第三方的组件或者类库的Http的组件.RestSharp具有以下的优点:   1.支持.NET 3.5+,Silverlight 4, Windows Pho ...

  7. Java build path && Deployment assembly && 编译路径 && 发布路径

    java build path java源文件,编译后,输出的路径,默认值为: *此时的源码文件夹在 /src deployment assembly 系统发布路径设置,将完成(或未完成)的项目对应的 ...

  8. cgg之字面值

    字面值时源代码中用来描述固定值的记号,可能是整数.浮点数.字符或者字符串 2.1 整数常量 除了常见的十进制数外,还有八进制(以数字0开头)或者十六进制(0x/0X)表示法. #include < ...

  9. WinForm 窗体之间相互嵌套

    public FrmScan() { InitializeComponent(); Form1 frm = new Form1(); frm.Dock = DockStyle.Fill; frm.Fo ...

  10. RocketMQ集群部署配置

    目标,使用2台机器部署RocketMQ多Master多Slave模式,异步复制集群模式. 第一步,修改/etc/hosts文件 192.168.116.115 rocketmq1 192.168.11 ...