题目:

http://codevs.cn/problem/1183/

题解:
二分+spfa

(s1+s2+s3+...+si)/(t1+t2+t3+...+ti)=v;(s1-v*t1)+(s2-v*t2)+(...)+(si-v*ti)=0;将边权转化为s-v*t,则问题变为二分一个v使得从1 ——n路径之和为0;
当 s总-mid*t总>0 v过小,要使l=mid,反之 r=mid
要使v尽量大,则dis[n]要尽量大,故spfa求最长路,判断正环
(这不是求最长路的真正原因)

注意:
check函数的返回值问题,要仔细考虑;
精度多一位。防卡。

那么 为什么要求最长路呢?
可以知道
dis>0的点,v需要上调,即当前的速度比答案慢,那么当前的速度就是合法的。
反之,dis<0 当前答案就是不合法的;
求最长路,让当前答案的dis尽可能大,即尽可能合法,那么结果就是当前速度的最优解;
求最短路,让dis尽可能小,尽可能不合法,那么结果就是最劣解。
二分求最短路得出的结果为 最劣解仍然能够符合条件,即有一个ansv,无论它跑哪条路,速度都大于等于ansv;
显然不同于所求答案ans 使得至少一条路的速度=ans;
代码:

#include<iostream>
#include<algorithm>
#include<algorithm>
#include<queue>
#include<cstdio>
using namespace std;
const int N=205;
int s[N][N],t[N][N];
int cnt[N],n;
bool inq[N];
double dis[N];
queue<int> Q;
void init(){while(!Q.empty()) Q.pop();for(int i=1;i<=n+2;i++){cnt[i]=0;inq[i]=0;dis[i]=-1e9+15;}
}
bool check(double ans){init();dis[1]=0;Q.push(1);inq[1]=1;cnt[1]++;while(!Q.empty()){int u=Q.front();Q.pop();inq[u]=0;for(int i=1;i<=n;i++){if(i==u) continue;double v=s[u][i]-ans*t[u][i];if(dis[i]<dis[u]+v){dis[i]=dis[u]+v;if(!inq[i]){Q.push(i);cnt[i]++;inq[i]=1;   }if(cnt[i]>=n+2) return true;}}}if(dis[n]<0) return false;return true;
}
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 l=0,r=1e5+59;while(r-l>=0.0001){double mid=(r+l)/2;if(check(mid)) l=mid;else r=mid;}printf("%.3lf",l);return 0;
}

Codevs 1183 泥泞的道路相关推荐

  1. codevs 1183 泥泞的道路 二分+SPFA最长路

    题目描述 Description CS有n个小区,并且任意小区之间都有两条单向道路(a到b,b到a)相连.因为最近下了很多暴雨,很多道路都被淹了,不同的道路泥泞程度不同.小A经过对近期天气和地形的科学 ...

  2. codevs1183 泥泞的道路(01分数规划)

    1183 泥泞的道路  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond       题目描述 Description CS有n个小区,并且任意小区之间都有两 ...

  3. 驾照科目一——2、中华人民共和国道路交通安全法实施条例

    中华人民共和国道路交通安全法实施条例 (2004年4月30日中华人民共和国国务院令第405号公布 根据2017年10月7日<国务院关于修改部分行政法规的决定>修订) 第一章 总 则 第一条 ...

  4. 最详细的SLAM综述

    论文:Past, Present, and Future of Simultaneous Localization And Mapping: Towards the Robust-Perception ...

  5. SAP License:SAP与ORACLE到底谁更强?

    相信很多搞ERP或准备进入ERP的朋友都曾经问过这样的问题,ORACLEERP和SAP谁强谁弱,网上关于这样的讨论也非常之多,下面的帖子虽然比较老,或许仍然能给你一些启迪. 01.业绩与市场份额 SA ...

  6. iSPRINT:Google 最高能的创新加速课程,清华老师都来给点赞!

    在大洋彼岸,谷歌风投投资的公司每天都会面对各种至关重要的难题:应该把主要的人力物力用于何处,应该如何起步?脑袋里的创意进入现实生活后有多大的成功率?为了找到解决问题的正确方向,到底需要进行多少次头脑风 ...

  7. DX11 游戏开发笔记 (二) DX11 基础框架 上

    必须吐槽csdn的排版,真的是对不起它的名字! 抱了很大的决心,才决定写下这篇博文,笔者大三从其它专业转行,学习c c++也就一年多,因为入了游戏这坑, 故选择在游戏引擎这块泥泞的道路上前进,且行且开 ...

  8. 世界十大经典汽车赛道盘点

    众所周知,赛车运动分为场地赛车和非场地赛车,起源距今已有超过100年的历史.最早的赛车比赛是在城市间的公路上进行的.因公路比赛危险性极大,专业比赛赛道应运而生.今天,同砚四驱就带大家一起去盘点那些上演 ...

  9. 什么是微信小程序【重点学习系列---干货十足--一文详解】

    引言 本文主要从什么是微信小程序.微信小程序的介绍.小程序开发流程.小程序代码构成.小程序安装使用.配置分析.开发特点.实战项目等多角度手把手带你详解微信小程序. 文章目录 引言 第一章-什么是微信小 ...

  10. mean shift:从图像分割到特征空间分析

    mean shift:从图像分割到特征空间分析 题外话 我最先看到mean shift是作为一种图像分割的方法,原文来源(Comaniciu & Meer, 2002).从作者介绍可以知道,m ...

最新文章

  1. Android RSA加密对象数据
  2. 转型中的知不知、能不能、愿不愿
  3. ie6/IE8/IE9/谷歌以及火狐等浏览器下li 高度一致解决办法
  4. SAP UI5应用里的页面路由处理
  5. 变量的比较之equals 与 == 的区别
  6. 宇宙的最原始状态是个什么样子
  7. 使用仿真软件查看机器人在一条直线上移动的 configuration
  8. 2021 年押宝哪个后端语言呢?
  9. 什么样的博文才能上首页呢?『博客使用技巧』
  10. vscode添加vue文件模板
  11. Rust: 如何生成一个水仙花数?
  12. 根号n向下取整的c语言编程,【向上取整/向下取整】C语言向上或向下取整 函数...
  13. 获取TrueType字体信息
  14. 常见的视频学习网站:(个人整理)
  15. 考研英语近义词与反义词·十四·总篇
  16. 机械键盘无冲测试软件,全键无冲/六键无冲可切换 键盘测试_狼派 X09暗影机械键盘_键鼠评测-中关村在线...
  17. 视频教程-Go快速入门强化-Go语言
  18. 【uniapp】使用扫码插件,解决uni.scanCode扫码效率低的问题
  19. 简单的swiper实现照片预览功能
  20. OCR文字识别笔记总结

热门文章

  1. Accuracy和Precision的区别
  2. CGArt 2008 Issue
  3. 2021前端面试经常被问到的题(附答案)
  4. odoo 慎用related(计算字段)
  5. 点到直线的距离公式: 一元微积分
  6. 控制面板设置java_win10系统打开java控制面板的具体技巧
  7. Java实现:BMI标准体重计算器
  8. 手机H5如何对接支付宝登陆授权以及支付(H5网站支付)
  9. android qq聊天界面键盘与布局,大屏手机单手聊天 QQ输入法浮动键盘做得到
  10. dnf连不上服务器删什么文件,DNF:4.9更新“无法上游戏”,删1个文件才可登录,策划不争气!...