1183 泥泞的道路

 时间限制: 1 s
 空间限制: 128000 KB
 题目等级 : 钻石 Diamond

 
 

 
题目描述 Description

CS有n个小区,并且任意小区之间都有两条单向道路(a到b,b到a)相连。因为最近下了很多暴雨,很多道路都被淹了,不同的道路泥泞程度不同。小A经过对近期天气和地形的科学分析,绘出了每条道路能顺利通过的时间以及这条路的长度。

现在小A在小区1,他希望能够很顺利地到达目的地小区n,请帮助小明找出一条从小区1出发到达小区n的所有路线中(总路程/总时间)最大的路线。请你告诉他这个值。

输入描述 Input Description

第一行包含一个整数n,为小区数。

接下来n*n的矩阵P,其中第i行第j个数表示从小区i到小区j的道路长度为Pi,j。第i行第i个数的元素为0,其余保证为正整数。

接下来n*n的矩阵T,第i行第j个数表示从小区i到小区j需要的时间Ti,j。第i行第i个数的元素为0,其余保证为正整数。

输出描述 Output Description

写入一个实数S,为小区1到达n的最大答案,S精确到小数点后3位。

样例输入 Sample Input

3

0 8 7

9 0 10

5 7 0

0 7 6

6 0 6

6 2 0

样例输出 Sample Output

2.125

数据范围及提示 Data Size & Hint

【数据说明】

30%的数据,n<=20

100%的数据,n<=100,p,t<=10000

/*
01分数规划
总路程/总时间=平均速度
可以二分v,建图spfa最长路 判断S总-v*T总=0为最优解,>0当前v满足。
若有正权回路则当前v一定满足(求最长路可以判正环)。
*/
#include<iostream>
#include<cstdio>
#include<cstring>
#include<queue>#define N 1001
#define inf 0x3f3f3f3fusing namespace std;
int n,m,ans,cnt,flag;
int s[N][N],t[N][N],in[N];
double dis[N][N],d[N];
bool inq[N];
queue<int>q;void clear()
{memset(inq,0,sizeof inq);while(!q.empty()) q.pop();memset(in,0,sizeof in);    for(int i=1;i<=n;i++) d[i]=-inf;
}bool spfa(int u)
{clear();q.push(u);inq[u]=1;d[u]=0;in[u]=0;while(!q.empty()){int now=q.front();q.pop();inq[now]=0; in[now]++;if(in[now]>=n) return true;for(int i=1;i<=n;i++){if(i==now) continue;if(d[i]<d[now]+dis[now][i] && s[now][i]){d[i]=d[now]+dis[now][i];if(!inq[i]) q.push(i),inq[i]=1;} }}return d[n]>0;
}bool check(double x)
{for(int i=1;i<=n;i++) for(int j=1;j<=n;j++)dis[i][j]=s[i][j]-t[i][j]*x;return spfa(1);
}int main()
{scanf("%d",&n);for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) scanf("%d",&s[i][j]);for(int i=1;i<=n;i++) for(int j=1;j<=n;j++)scanf("%d",&t[i][j]);double eps=0.00001,l=0,r=10000;while(r-l>eps){double mid=(l+r)/2;if(check(mid)) l=mid;else r=mid;}printf("%.3lf\n",l);
} 

转载于:https://www.cnblogs.com/L-Memory/p/9748383.html

codevs1183 泥泞的道路(01分数规划)相关推荐

  1. bzoj 1690: [Usaco2007 Dec]奶牛的旅行(01分数规划--最优比率环)

    01分数规划问题: 给你n个物品,a[i]表示第i个物品的收益,b[i]表示代价,x[i]表示选或不选,求一个最佳方案使得下式取值最大 通用解: 当然是从式子上考虑,定义函数F[cnt]如下: 其中c ...

  2. BZOJ1690 Usaco2007 Dec 奶牛的旅行 【01分数规划】

    BZOJ1690 Usaco2007 Dec 奶牛的旅行 题目描述 作为对奶牛们辛勤工作的回报,Farmer John决定带她们去附近的大城市玩一天.旅行的前夜,奶牛们在兴奋地讨论如何最好地享受这难得 ...

  3. poj2976(0-1分数规划)

    0-1分数规划 设x[i]等于1或0. 则我们所求的比率 rate = ∑(cost[i] * x[i]) / ∑(cost[i] * x[i]), 0≤i<m . z( rate ) = ∑( ...

  4. 点分治问题 ----------- luoguP2942 [WC2010]重建计划 [点分治 + bfs + 单调队列 + 预处理建树 + 二分 + 01分数规划]

    题目链接 解题思路: 1.对于这个Avgvalue=∑e∈sv(e)∣s∣Avgvalue = \frac{\sum_{e\in s}v(e)}{|s|}Avgvalue=∣s∣∑e∈s​v(e)​ ...

  5. 解题报告:AcWing 1165. 单词环(01分数规划、hash、经验优化)

    本题的关键在于: 建图 01分数规划 本题的数据过大,如果直接spfa判断会TLE,因此我们使用经验优化,就是如果所有的点入队的次数过多,比如大于100000,那么我们直接认为它是存在正环的.(免去T ...

  6. 模板 - 判断负环(超时高效优化技巧)、01分数规划

    整理的算法模板合集: ACM模板 判断负环 判正环求最长路,判负环求最短路 int n; // 总点数 int h[N], w[N], e[N], ne[N], idx; // 邻接表存储所有边 in ...

  7. 【图论专题】负环与01分数规划

    整理的算法模板合集: ACM模板 题目列表: 题目 算法 AcWing 904. 虫洞 spfa判负环 AcWing 361. 观光奶牛 最优比率环.01分数规划 AcWing 1165. 单词环 0 ...

  8. POJ2728 Desert King ——01分数规划Dinkelbach迭代法+最小生成树prim算法

    首先,纪念我用Linux系统AC的第一题-   安装这个万恶的NOI Linux系统费了6小时的时间,不过好在最后终于装上了,但是因为我安装的Linux系统比较烂,还遭到了小花儿和js的鄙视,唉,本人 ...

  9. POJ 2728 01分数规划

    题意: 最优比率生成树,要求生成树中的所有边的花费与所有边的长度的比值最小 题解: 01分数规划,详见http://www.cnblogs.com/proverbs/archive/2013/01/0 ...

最新文章

  1. 移动应用开发—— 如何搭建开发大型的应用架构?
  2. Linux下查看Nginx,tomcat等的并发连接数和连接状态
  3. 26.2. Web UI
  4. 如何锁定计算机硬盘,Win7系统怎么锁住磁盘|Win7系统锁住磁盘的详细步骤
  5. win10 jenkins svn android studio 自动化打包教程 以及一些问题的解决办法
  6. 数组中两个字符串的最小距离
  7. mysql有没有单机版?
  8. python找零钱问题_Python基于回溯法子集树模板解决找零问题示例
  9. SpringMVC表单验证器的使用
  10. 第九节:JWT简介和以JS+WebApi为例基于JWT的安全校验
  11. 【K8S】Docker向私有仓库拉取/推送镜像报错(http: server gave HTTP response to HTTPS client)
  12. java l1 l2缓存,Java 两级缓存框架
  13. matlab自带SVM算法例子(附函数详解)
  14. 你可能不知道的shell、bash二三事(Centos 7)
  15. 批量保存微信收藏的表情包
  16. python如何设置开头注释_小疯谈python:(二)python语言的基本语法元素
  17. IM系统架构设计之浅见
  18. c++ opencv图像拼接
  19. 编译make px4_fmu-v2_default upload时,报错ERROR Board can accept larger flash images (2080768 bytes)
  20. android 语音适配,Android多语言适配繁体中文

热门文章

  1. css border制作小三角形状及应用(兼容IE6)
  2. 纯css的accordion效果
  3. Building High Performance Websites (1) CDN
  4. [导入]文件,图片操作相关.
  5. Web服务器和应用程序服务器有什么区别
  6. java 文件分隔符_Java文件分隔符
  7. dice系数 交叉熵_语义分割中的损失函数
  8. php 复杂密码生成,php随机密码生成器
  9. matlab柱状斜线_Matlab:柱状图饼状图填充不同条纹
  10. 用stringstream可以用指定字符分割字符串