codevs 1183 泥泞的道路 (二分+SPFA+差分约束)
- /*
- 二分答案(注意精度)
- 对于每一个答案 有(s1+s2+s3...)/(t1+t2+t3...)>=ans 时符合条件
- 这时ans有变大的空间
- 对于上述不等式如果枚举每一条路显得太暴力
- 化简一下变成 :s1-t1*ans+s2-t2*ans+s3-t3*ans...>=0
- 差分约束跑最长路 如果dis[n]>0 或者有正环 (开始这个忘掉了)ans就合法
- */
- #include<iostream>
- #include<cstdio>
- #include<cstring>
- #include<queue>
- const double Jing=0.0001;
- using namespace std;
- double s[][],t[][],ans,a[][],dis[];
- int n,f[],c[],falg;
- void SPFA(int st)
- {
- memset(f,,sizeof(f));
- memset(dis,-0x3f,sizeof(dis));
- queue<int>q;
- q.push(st);f[st]=;dis[st]=,c[st]=;
- while(!q.empty())
- {
- int k=q.front();
- q.pop();
- if(c[k]>n)
- {
- falg=;break;
- }
- for(int i=;i<=n;i++)
- if(s[k][i]&&dis[i]<dis[k]+a[k][i])
- {
- dis[i]=dis[k]+a[k][i];
- if(f[i]==)
- {
- c[i]=c[k]+;
- q.push(i);
- f[i]=;
- }
- }
- f[k]=;
- }
- }
- bool check(double x)
- {
- for(int i=;i<=n;i++)
- for(int j=;j<=n;j++)
- a[i][j]=s[i][j]-x*t[i][j];
- falg=;
- SPFA();
- if(dis[n]>||falg==)return ;
- else return ;
- }
- int main()
- {
- cin>>n;
- for(int i=;i<=n;i++)
- for(int j=;j<=n;j++)
- cin>>s[i][j];
- for(int i=;i<=n;i++)
- for(int j=;j<=n;j++)
- cin>>t[i][j];
- double l=,r=;
- while(r-l>Jing)
- {
- double mid=(l+r)/;
- if(check(mid))
- {
- ans=mid;
- l=mid;
- }
- else r=mid;
- }
- printf("%.3f",ans);
- return ;
- }
codevs 1183 泥泞的道路 (二分+SPFA+差分约束)的更多相关文章
- Codevs 1183 泥泞的道路
1183 泥泞的道路 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 传送门 题目描述 Description CS有n个小区,并且任意小区之间都有两条单向道路 ...
- [codevs 1183][泥泞的道路(二分+spfa)
题目:http://dev.codevs.cn/problem/1183/ 分析:这个和最优比率生成树很像,都可以二分答案的,只不过判定方面一个是求是否有最短路径,一个是求是否有生成树.假设等待判定的 ...
- codevs 1183 泥泞的道路 01分数规划
题目链接 题目描述 Description CS有n个小区,并且任意小区之间都有两条单向道路(a到b,b到a)相连.因为最近下了很多暴雨,很多道路都被淹了,不同的道路泥泞程度不同.小A经过对近期天气和 ...
- Luogu4926 倍杀测量者(二分答案+差分约束)
容易想到二分答案.问题变为判断是否所有条件都被满足,可以发现这是很多变量间的相对关系,取个log之后就是经典的差分约束模型了.特殊的地方在于某些人的分数已被给定,从每个人开始跑一遍最短路判断一下是否能 ...
- Candies---hdu3159(spfa+差分约束)
题目链接:http://poj.org/problem?id=3159 题意:有n个小孩,m个关系格式是A B C 表示小孩 B 的糖果数最多比小孩A多C个,相当于B-A<=C; 有m个这样的关 ...
- POJ 3169 Layout (spfa+差分约束)
题目链接:http://poj.org/problem?id=3169 差分约束的解释:http://www.cnblogs.com/void/archive/2011/08/26/2153928.h ...
- Schedule Problem spfa 差分约束
题意:有n个任务,给出完成n个任务所需时间,以及一些任务安排.任务安排有四种: FAS a b:任务a需在任务b开始后完成. FAF a b:任务a需在任务b完成后完成. SAF a b:任务a需在任 ...
- POJ1275 Cashier Employment 二分、差分约束
传送门 题意太长 为了叙述方便,将题意中的$0$点看作$1$点,$23$点看做$24$点 考虑二分答案(其实从小到大枚举也是可以的) 设$x_i$是我们选的雇员第$i$小时开始工作的人数,$s_i$是 ...
- POJ 3169 Layout (spfa+差分约束)
题目链接:http://poj.org/problem?id=3169 题目大意:n头牛,按编号1~n从左往右排列,可以多头牛站在同一个点,给出ml行条件,每行三个数a b c表示dis[b]-dis ...
随机推荐
- 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 ...
- C# 当double数值较大且小数位过多时转化成字符串并保留小数位
今天在C#中碰到了一个问题,需要将double转换成字符串显示,要求保留小数位. 在网上查询了一下相关的文章 具体如下: double temp=3.1415926; (F)Fixed point:s ...
- 递归删除.DS_Store文件
删除svn文件 sudo find . -name ".DS_Store" -exec rm -r {} \; sudo find . -name ".git" ...
- 如何调整iMindMap打印设置
打印何尝不是一种保存.导出iMindMap思维导图的一种方法,我们还可以通过调整打印设置来满足我们不同的需求.下面小编就给你翻一翻iMindMap中文版教程,教你怎样调整打印设置. 我们在打开iMin ...
- 一份React-Native学习指南-感谢分享
自己在学习React-Native过程中整理的一份学习指南,包含 教程.开源app和资源网站等,还在不断更新中.欢迎pull requests! React-Native学习指南 本指南汇集React ...
- 从一到二:利用mnist训练集生成的caffemodel对mnist测试集与自己手写的数字进行测试
通过从零到一的教程,我们已经得到了通过mnist训练集生成的caffemodel,主要包含下面四个文件: 接下来就可以利用模型进行测试了.关于测试方法按照上篇教程还是选择bat文件,当然python. ...
- linux中硬盘及网卡的表示方法
Linux中的所有设备均表示为/dev下的一个文件,各种IDE设备分配一个由hd前缀组成的文件:而对于各种SCSI设备,则分配了一个由sd前缀组成的文件,例如: IDE0接口上的主盘成为/dev/hd ...
- android studio集成环境搭建
1 下载JDK(http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html) An ...
- Unity的Profiler性能分析
1. CPU Usage A. WaitForTargetFPS: Vsync(垂直同步)功能所,即显示当前帧的CPU等待时间 B. Overhead: Profiler总体时间-所有单项的记录时间总 ...
- 【转】近百个Android优秀开源项目
近百个Android优秀开源项目 Android开发又将带来新一轮热潮,很多开发者都投入到这个浪潮中去了,创造了许许多多相当优秀的应用.其中也有许许多多的开发者提供了应用开源项目,贡献出他们的智慧 ...