[题目链接]

https://www.lydsy.com/JudgeOnline/problem.php?id=5367

[算法]

很明显的分数规划问题

预处理从一个点走到另一个点所获最大利润和最短路

SPFA判正环是否存在即可

时间复杂度 : O(N ^ 2K + N ^ 2 logN)

[代码]

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef long double ld;
typedef unsigned long long ull;
#define N 1010
#define M 10010
const double inf = 1e15;
const double EPS = 1e-; int n , m , k;
int cnt[N];
ll dist[N][N] , cst[N][N] , B[N][N] , S[N][N];
double D[N][N] , dis[N];
bool inq[N]; template <typename T> inline void chkmax(T &x,T y) { x = max(x,y); }
template <typename T> inline void chkmin(T &x,T y) { x = min(x,y); }
template <typename T> inline void read(T &x)
{
T f = ; x = ;
char c = getchar();
for (; !isdigit(c); c = getchar()) if (c == '-') f = -f;
for (; isdigit(c); c = getchar()) x = (x << ) + (x << ) + c - '';
x *= f;
}
inline bool check(double mid)
{
queue< int > q;
for (int i = ; i <= n; i++)
{
for (int j = ; j <= n; j++)
{
D[i][j] = 1.0 * cst[i][j] - 1.0 * dist[i][j] * mid;
}
}
memset(inq , false , sizeof(inq));
for (int i = ; i <= n; i++)
{
q.push(i);
inq[i] = true;
cnt[i] = ;
dis[i] = -inf;
}
while (!q.empty())
{
int cur = q.front();
q.pop();
inq[cur] = false;
for (int i = ; i <= n; i++)
{
if (dis[cur] + D[cur][i] >= dis[i])
{
dis[i] = dis[cur] + D[cur][i];
if (!inq[i])
{
inq[i] = true;
++cnt[i];
if (cnt[i] > n) return true;
q.push(i);
}
}
}
}
return false;
} int main()
{ read(n); read(m); read(k);
for (int i = ; i <= n; i++)
{
for (int j = ; j <= * k; j++)
{
ll x;
read(x);
if (j & ) B[i][(j + ) >> ] = x;
else S[i][j >> ] = x;
}
}
for (int i = ; i <= n; i++)
{
for (int j = ; j <= n; j++)
{
for (int x = ; x <= k; x++)
{
if (B[i][x] != - && S[j][x] != -)
chkmax(cst[i][j] , S[j][x] - B[i][x]);
}
}
}
for (int i = ; i <= n; i++)
{
for (int j = ; j <= n; j++)
{
dist[i][j] = inf;
}
}
for (int i = ; i <= m; i++)
{
int u , v;
ll w;
read(u); read(v); read(w);
chkmin(dist[u][v] , w);
}
for (int x = ; x <= n; x++)
{
for (int i = ; i <= n; i++)
{
for (int j = ; j <= n; j++)
{
chkmin(dist[i][j] , dist[i][x] + dist[x][j]);
}
}
}
double l = , r = , ans = ;
for (int i = ; i <= n; i++)
{
for (int j = ; j <= n; j++)
{
chkmax(r , (double)cst[i][j]);
}
}
while (r - l > EPS)
{
double mid = (l + r) / 2.0;
if (check(mid))
{
l = mid;
ans = mid;
} else r = mid;
}
printf("%lld\n" , (ll)ans); return ; }

[APIO 2017] 商旅的更多相关文章

  1. APIO 2017 商旅 洛谷3778

    Description 在广阔的澳大利亚内陆地区长途跋涉后,你孤身一人带着一个背包来到了科巴.你被这个城市发达而美丽的市场所 深深吸引,决定定居于此,做一个商人.科巴有个集市,集市用从1到N的整数编号 ...

  2. APIO 2017 游记

    //第一次写游记,只是流水账...结果好像确实只去游了…… day-11 省选挂了,即将退役……(然而apio之后得知并没有退役,感谢放我一条活路)(吐槽出题人考完才造数据,题目没有子任务之类的玩意, ...

  3. CTSC&APIO 2017游记

    Day 0 早上4点多起床赶飞机,起床的时候发现闹钟调成下午4点的了...(虽然说早就已经被父母的洗漱声音吵醒了) 飞机上碎觉.到了北京发现比福州还热...而且北京今天意外地好天气,没有传言中的&qu ...

  4. AtCoder Grand Contest 015 题解

    A - A+...+B Problem 常识 Problem Statement Snuke has N integers. Among them, the smallest is A, and th ...

  5. HAOI 2017 游记

    省选 2017年4月23日 流水账式游记,不喜勿喷. Day0: 准备出发,上午敲了一顿板子,板子敲完了就打小游戏,老师也不管了. 过程中各种奶,说什么今年一定考仙人掌啦,今年一定考字符串啦,今年一定 ...

  6. CI Weekly #10 | 2017 DevOps 趋势预测

    2016 年的最后几个工作日,我们对 flow.ci Android & iOS 项目做了一些优化与修复: iOS 镜像 cocoapods 版本更新: fir iOS上传插件时间问题修复: ...

  7. 猖獗的假新闻:2017年1月1日起iOS的APP必须使用HTTPS

    一.假新闻如此猖獗 刚才一位老同事 打电话问:我们公司还是用的HTTP,马上就到2017年了,提交AppStore会被拒绝,怎么办? 公司里已经有很多人问过这个问题,回答一下: HTTP还是可以正常提 ...

  8. iOS的ATS配置 - 2017年前ATS规定的适配

    苹果规定 从2017年1月1日起,新提交的 app 不允许使用NSAllowsArbitraryLoads来绕过ATS(全称:App Transport Security)的限制. 以前为了能兼容ht ...

  9. 深入研究Visual studio 2017 RC新特性

    在[Xamarin+Prism开发详解三:Visual studio 2017 RC初体验]中分享了Visual studio 2017RC的大致情况,同时也发现大家对新的Visual Studio很 ...

随机推荐

  1. 低成本安全硬件(二):RFID on PN532

    引言 鉴于硬件安全对于大多数新人是较少接触的,而这方面又非常吸引我,但是部分专业安全研究设备较高的价格使人望而却步.在该系列中,笔者希望对此感兴趣的读者在花费较少金钱的情况下体会到硬件安全的魅力所在. ...

  2. DNS 域名解析过程

    当用户在浏览器中输入域名并按下回车键后,DNS解析会有如下7个步骤 浏览器缓存 浏览器会检查缓存中有没有这个域名对应的解析过的IP地址,如果缓存中有,这个解析过程就将结束.浏览器缓存域名也是有限制的, ...

  3. sql_视图和函数

    创建视图: create view xxx as select * from userinfo; 删除视图: drop view xxx 修改视图: alter view xxx as selete ...

  4. 控制显示input隐藏和查看密码

    通过更改input的password和text类型即可实现 //点击函数,获取dom,判断更改属性. show(){ let input=document.getElementById("i ...

  5. ListView中button监听器 设置 及 优化

    在应用开发中常常会用到ListView,而且每个Item里面都会有button之类的须要进行事件监听的控件.在给button加入OnClickListener的时候,一開始非常下意识的会想在ListV ...

  6. CrtmpServr 接收Http流程

    最近在研究CrtmpServer http部分,记录一些基本的流程,以备查阅. 首先,打开配置脚本CrtmpServer.lua ,确认脚本中有以下内容,如果没有需要加上. { name=" ...

  7. ubuntu14.04下CPU的caffe配置,不成功的朋友请与我(lee)联系,后面附带邮箱

    因广大朋友需求cpu的caffe配置.所以我(lee)在这份博客中对cpu配置caffe做出对应操作说明.希望能够解决大家对cpu配置caffe的困惑.少走弯路. 假设有安装不成功的朋友能够和我联系, ...

  8. Laravel建站02--配置Laravel

    Laravel项目的根目录下有.env文件,如果没有可以把.env.example改名为.env 这个文件是配置文件,可以把app_key.数据库.redis缓存等配置信息写在这个文件里. 目前5.4 ...

  9. 安卓UI适配限定符

    引言 对于程序在不同尺寸的Android机器上执行,对UI的适用性造成了额外的开销,只是限定符的出现,非常方便的攻克了这个问题.通过创建限定符相关的文件夹来解决资源的载入. 限定符用处 限定符(mdp ...

  10. 【浅墨Unity3D Shader编程】之三 光之城堡篇:子着色器、通道与标签的写法 &amp; 纹理混合

    本系列文章由@浅墨_毛星云 出品,转载请注明出处.   文章链接:http://hpw123.net/a/C__/kongzhitaichengxu/2014/1117/120.html 作者:毛星云 ...