题目:https://www.luogu.org/problemnew/show/P1073

由于任何城市都可以多次经过,所以可以随便走,也就不用太在意有向边和无向边,把无向边当做两条有向边处理;

根据题意,价格较小的城市要先于价格较大的城市被经过,然而它又可以随便走,所以不妨分开考虑;

每个点维护两个值,一个是从起点到它的最小值,一个是从终点到它的最大值,在每个城市的二者之差中取MAX即可;

于是问题转化为求两个单源最短路,对于终点出发的那个,将边全部反向进行最短路即可。

代码如下:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<queue>
using namespace std;
priority_queue< pair<int,int> >q;
int const MAXN=1e5+5,MAXM=5e5+5;
int n,m,head[MAXN],ct,s[MAXN],t[MAXN],head2[MAXN],ct2,cost[MAXN],ans;
bool vis[MAXN];
struct N{int to,next;N(int t=0,int n=0):to(t),next(n) {}
}edge[MAXM],edge2[MAXM];
void add(int x,int y,int z)
{edge[++ct]=N(y,head[x]);head[x]=ct;edge2[++ct2]=N(x,head2[y]);head2[y]=ct;if(z==2){edge[++ct]=N(x,head[y]);head[y]=ct;edge2[++ct2]=N(y,head2[x]);head2[x]=ct;}
}
void dijkstra1()
{while(q.size())q.pop();memset(s,0x3f,sizeof s);memset(vis,0,sizeof vis);s[1]=cost[1];q.push(make_pair(-cost[1],1));//大根堆 while(q.size()){int x=q.top().second;q.pop();if(vis[x])continue;//!vis[x]=1;for(int i=head[x],u;i;i=edge[i].next)if(s[u=edge[i].to]>min(s[x],cost[u])){s[u]=min(s[x],cost[u]);q.push(make_pair(-s[u],u));}}
}
void dijkstra2()
{while(q.size())q.pop();memset(t,-3,sizeof t);memset(vis,0,sizeof vis);t[n]=cost[n];q.push(make_pair(cost[n],n));//大根堆 while(q.size()){int x=q.top().second;q.pop();if(vis[x])continue;//!vis[x]=1;for(int i=head2[x],u;i;i=edge2[i].next)if(t[u=edge2[i].to]<max(t[x],cost[u])){t[u]=max(t[x],cost[u]);q.push(make_pair(t[u],u));}}
}
int main()
{scanf("%d%d",&n,&m);for(int i=1;i<=n;i++)scanf("%d",&cost[i]);for(int i=1,x,y,z;i<=m;i++){scanf("%d%d%d",&x,&y,&z);add(x,y,z);}dijkstra1();dijkstra2();for(int i=1;i<=n;i++)ans=max(ans,t[i]-s[i]);printf("%d",ans);return 0;
}

转载于:https://www.cnblogs.com/Zinn/p/8922376.html

洛谷P1073最优贸易——双向取值相关推荐

  1. 洛谷 P1073 最优贸易 (分层图状态转移+SPFA,求最长路径;另附某dalao的超短代码:暴力+动规)

    题目链接1 题目链接2 另附某dalao的超短代码:暴力+动规 P1073 最优贸易 题目描述 C国有 n 个大城市和 m 条道路,每条道路连接这 n 个城市中的某两个城市. 任意两个城市之间最多只有 ...

  2. 洛谷 P1073 最优贸易

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

  3. 洛谷P1073 最优贸易

    反向建图+dijkstra 切一道老题水水... 题目的意思是让我们找到两个点x,y,使得差值最大. 所以我们先在正向图跑dijkstra,用d数组表示从起点到i点的最少价值,所以可以用d[i]=mi ...

  4. 信息学奥赛一本通 1956:【11NOIP普及组】表达式的值 | 洛谷 P1310 [NOIP2011 普及组] 表达式的值

    [题目链接] ybt 1956:[11NOIP普及组]表达式的值 洛谷 P1310 [NOIP2011 普及组] 表达式的值 [题目考点] 表达式树 由带括号的中缀表达式构建表达式树 [解题思路] 思 ...

  5. 信息学奥赛一本通 1962:【13NOIP普及组】表达式求值 | 洛谷 P1981 [NOIP2013 普及组] 表达式求值

    [题目链接] ybt 1962:[13NOIP普及组]表达式求值 洛谷 P1981 [NOIP2013 普及组] 表达式求值 [题目考点] 栈 中缀表达式转后缀表达式,后缀表达式求值 中缀表达式求值 ...

  6. 力扣:1两数之和(python)-------->双向取值

    题目:给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target  的那 两个 整数,并返回它们的数组下标. class Solution:def two ...

  7. 洛谷 P1073 [NOIP2009 T3] 最优贸易

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

  8. 洛谷P1073 Tarjan + 拓扑排序 // 构造分层图

    https://www.luogu.org/problemnew/show/P1073 C国有 n n个大城市和 mm 条道路,每条道路连接这 nn个城市中的某两个城市.任意两个城市之间最多只有一条道 ...

  9. Luogu P1073 最优贸易【最短路/建反图】 By cellur925

    题目传送门 这么经典的题目,还是看了lyd的题解....唉难过. 一句话题意:在一张点有全都的图上找一条从1到n的路径,存在两个点p,q(p<q),使val[q]-val[p]最大. 给出的图是 ...

最新文章

  1. 数字图像缩放之最近邻插值与双线性插值处理效果对比
  2. git clone 仓库的部分代码
  3. 罗振宇2021跨年演讲1:长大以后有多少责任和烦恼?
  4. html flex 表单样式,Flexbox 布局的最简单表单的实现
  5. jQuery的立即调用表达式
  6. python json解析 超过对象_Python | 关于Requests与Json的使用小结
  7. 编译原理完整学习笔记(四):语法分析
  8. java.lang.NoClassDefFoundError: Could not initialize class org.apache.batik.bridge.CursorManager
  9. 2345看图王总是弹窗广告怎么办?
  10. 一些好用的链接(持续更新)——视频相关
  11. 我们说运营,到底是在说运营什么?
  12. 背景建模方法论文总结
  13. 电子设计竞赛学习msp430单片机(msp430g2553,msp430f5529,tmec123G)
  14. 《Python编程从入门到实践》16.2.6收盘价均值,代码理解
  15. 菜鸟的三遍读书法进阶
  16. IE6/IE7 /IE8/Firefox/Chrome/Safa…
  17. mysql数据库中怎么删除一行_数据库教程_mysql如何删除表中一行数据?- 中国it教程网...
  18. 求多项式f(x)=anxn +an-1xn-1+…+a1x+a0和f(x)=((anx+an-1)x+…+a1)x+a0
  19. 千寻高精度定位系统能在pixhawk系统上使用成功吗?
  20. 排班源码,排班软件源码,排班系统源码,java,php,asp,asp.net,c#,python通用

热门文章

  1. Zabbix2.4安装和问题总结(一)
  2. Atitit. 数据库-----catalog与schema的设计区别以及在实际中使用 获取数据库所有库表 java jdbc php  c#.Net...
  3. java对象的强引用,软引用,弱引用和虚引用
  4. ApiCloud云端管理平台(v.20151022)
  5. A*算法 javascript模拟
  6. python 发邮件-带附件-文本-html
  7. 使用Wamp搭建Php本地开发环境,HBuilder调试
  8. 使用B::Deparse模块对perl代码反汇编
  9. DirectShow Filter 基础与简单的示例程序
  10. undefined reference to...