【bzoj4898】[Apio2017]商旅 Floyd+分数规划+Spfa
2021-05-12 16:29
标签:再处理 memset namespace turn ... lin 无法 long cstring 题目描述 有n个点、m条边、和k种商品。第$i$个点可以以$B_{ij}$的价格买入商品$j$,并以$S_{ij}$的价格卖出。任何时候只能持有一个商品。求一个环,使得初始不携带商品时以某种交易方式走过一圈所得的利润/路径长度(向下取整)最大。 输入 输出 样例输入 4 5 2 样例输出 2 题解 Floyd+分数规划+Spfa 题目显然是一个分数规划的模型,但是如果直接使用分层图模拟商品买卖的过程的话肯定会TLE。 我们不妨换个思路:考虑每件两点之间的连续交易。即在A地购买商品,并在B地卖出的这个过程。 那么这个过程走的一定是最短路,买卖的一定是盈利最大的商品(当无法盈利时显然不进行买卖,盈利为0)。 所以可以使用Floyd求出任意两点之间最短路,再处理出来任意两点之间的最大盈利。 然后就可以对这个图求最大比率环了。二分答案,把每条边的权值看作 最大盈利-最短路*mid ,如果有非负环则说明mid成立,否则mid不成立。 时间复杂度$O(n^2k+n^3\log v)$。 【bzoj4898】[Apio2017]商旅 Floyd+分数规划+Spfa 标签:再处理 memset namespace turn ... lin 无法 long cstring 原文地址:http://www.cnblogs.com/GXZlegend/p/7570573.html
10 9 5 2
6 4 20 15
9 7 10 9
-1 -1 16 11
1 2 3
2 3 3
1 4 1
4 3 1
3 1 1
#include
文章标题:【bzoj4898】[Apio2017]商旅 Floyd+分数规划+Spfa
文章链接:http://soscw.com/index.php/essay/84767.html