1. /*
  2. 二分答案(注意精度)
  3. 对于每一个答案 有(s1+s2+s3...)/(t1+t2+t3...)>=ans 时符合条件
  4. 这时ans有变大的空间
  5. 对于上述不等式如果枚举每一条路显得太暴力
  6. 化简一下变成 :s1-t1*ans+s2-t2*ans+s3-t3*ans...>=0
  7. 差分约束跑最长路 如果dis[n]>0 或者有正环 (开始这个忘掉了)ans就合法
  8. */
  9. #include<iostream>
  10. #include<cstdio>
  11. #include<cstring>
  12. #include<queue>
  13. const double Jing=0.0001;
  14. using namespace std;
  15. double s[][],t[][],ans,a[][],dis[];
  16. int n,f[],c[],falg;
  17. void SPFA(int st)
  18. {
  19. memset(f,,sizeof(f));
  20. memset(dis,-0x3f,sizeof(dis));
  21. queue<int>q;
  22. q.push(st);f[st]=;dis[st]=,c[st]=;
  23. while(!q.empty())
  24. {
  25. int k=q.front();
  26. q.pop();
  27. if(c[k]>n)
  28. {
  29. falg=;break;
  30. }
  31. for(int i=;i<=n;i++)
  32. if(s[k][i]&&dis[i]<dis[k]+a[k][i])
  33. {
  34. dis[i]=dis[k]+a[k][i];
  35. if(f[i]==)
  36. {
  37. c[i]=c[k]+;
  38. q.push(i);
  39. f[i]=;
  40. }
  41. }
  42. f[k]=;
  43. }
  44. }
  45. bool check(double x)
  46. {
  47. for(int i=;i<=n;i++)
  48. for(int j=;j<=n;j++)
  49. a[i][j]=s[i][j]-x*t[i][j];
  50. falg=;
  51. SPFA();
  52. if(dis[n]>||falg==)return ;
  53. else return ;
  54. }
  55. int main()
  56. {
  57. cin>>n;
  58. for(int i=;i<=n;i++)
  59. for(int j=;j<=n;j++)
  60. cin>>s[i][j];
  61. for(int i=;i<=n;i++)
  62. for(int j=;j<=n;j++)
  63. cin>>t[i][j];
  64. double l=,r=;
  65. while(r-l>Jing)
  66. {
  67. double mid=(l+r)/;
  68. if(check(mid))
  69. {
  70. ans=mid;
  71. l=mid;
  72. }
  73. else r=mid;
  74. }
  75. printf("%.3f",ans);
  76. return ;
  77. }

codevs 1183 泥泞的道路 (二分+SPFA+差分约束)的更多相关文章

  1. Codevs 1183 泥泞的道路

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

  2. [codevs 1183][泥泞的道路(二分+spfa)

    题目:http://dev.codevs.cn/problem/1183/ 分析:这个和最优比率生成树很像,都可以二分答案的,只不过判定方面一个是求是否有最短路径,一个是求是否有生成树.假设等待判定的 ...

  3. codevs 1183 泥泞的道路 01分数规划

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

  4. Luogu4926 倍杀测量者(二分答案+差分约束)

    容易想到二分答案.问题变为判断是否所有条件都被满足,可以发现这是很多变量间的相对关系,取个log之后就是经典的差分约束模型了.特殊的地方在于某些人的分数已被给定,从每个人开始跑一遍最短路判断一下是否能 ...

  5. Candies---hdu3159(spfa+差分约束)

    题目链接:http://poj.org/problem?id=3159 题意:有n个小孩,m个关系格式是A B C 表示小孩 B 的糖果数最多比小孩A多C个,相当于B-A<=C; 有m个这样的关 ...

  6. POJ 3169 Layout (spfa+差分约束)

    题目链接:http://poj.org/problem?id=3169 差分约束的解释:http://www.cnblogs.com/void/archive/2011/08/26/2153928.h ...

  7. Schedule Problem spfa 差分约束

    题意:有n个任务,给出完成n个任务所需时间,以及一些任务安排.任务安排有四种: FAS a b:任务a需在任务b开始后完成. FAF a b:任务a需在任务b完成后完成. SAF a b:任务a需在任 ...

  8. POJ1275 Cashier Employment 二分、差分约束

    传送门 题意太长 为了叙述方便,将题意中的$0$点看作$1$点,$23$点看做$24$点 考虑二分答案(其实从小到大枚举也是可以的) 设$x_i$是我们选的雇员第$i$小时开始工作的人数,$s_i$是 ...

  9. POJ 3169 Layout (spfa+差分约束)

    题目链接:http://poj.org/problem?id=3169 题目大意:n头牛,按编号1~n从左往右排列,可以多头牛站在同一个点,给出ml行条件,每行三个数a b c表示dis[b]-dis ...

随机推荐

  1. Lua 5.1 for Delphi 2010

    This is a Lua 5.1 Wrapper for Delphi 2009 and Delphi 2010 which automatically creates OOP callback f ...

  2. C# 当double数值较大且小数位过多时转化成字符串并保留小数位

    今天在C#中碰到了一个问题,需要将double转换成字符串显示,要求保留小数位. 在网上查询了一下相关的文章 具体如下: double temp=3.1415926; (F)Fixed point:s ...

  3. 递归删除.DS_Store文件

    删除svn文件 sudo find . -name ".DS_Store" -exec rm -r {} \; sudo find . -name ".git" ...

  4. 如何调整iMindMap打印设置

    打印何尝不是一种保存.导出iMindMap思维导图的一种方法,我们还可以通过调整打印设置来满足我们不同的需求.下面小编就给你翻一翻iMindMap中文版教程,教你怎样调整打印设置. 我们在打开iMin ...

  5. 一份React-Native学习指南-感谢分享

    自己在学习React-Native过程中整理的一份学习指南,包含 教程.开源app和资源网站等,还在不断更新中.欢迎pull requests! React-Native学习指南 本指南汇集React ...

  6. 从一到二:利用mnist训练集生成的caffemodel对mnist测试集与自己手写的数字进行测试

    通过从零到一的教程,我们已经得到了通过mnist训练集生成的caffemodel,主要包含下面四个文件: 接下来就可以利用模型进行测试了.关于测试方法按照上篇教程还是选择bat文件,当然python. ...

  7. linux中硬盘及网卡的表示方法

    Linux中的所有设备均表示为/dev下的一个文件,各种IDE设备分配一个由hd前缀组成的文件:而对于各种SCSI设备,则分配了一个由sd前缀组成的文件,例如: IDE0接口上的主盘成为/dev/hd ...

  8. android studio集成环境搭建

    1 下载JDK(http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html)      An ...

  9. Unity的Profiler性能分析

    1. CPU Usage A. WaitForTargetFPS: Vsync(垂直同步)功能所,即显示当前帧的CPU等待时间 B. Overhead: Profiler总体时间-所有单项的记录时间总 ...

  10. 【转】近百个Android优秀开源项目

    近百个Android优秀开源项目   Android开发又将带来新一轮热潮,很多开发者都投入到这个浪潮中去了,创造了许许多多相当优秀的应用.其中也有许许多多的开发者提供了应用开源项目,贡献出他们的智慧 ...