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 ...
随机推荐
- tableview 编辑状态设置
#pragma mark - tableview 编辑状态设置 -(BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSI ...
- 如何使用ASP.NET Web API OData在Oracle中使用Entity Framework 6.x Code-First方式开发 OData V4 Service
环境: Visual Studio 2013 + .Net Framework 4.5.2 1.新建项目 2.安装OData,ODP.NET 安装的包: 下面是部分代码: using System; ...
- cocos creater 简单的跳跃动作。
因为最近一段时间有打算做一个2D游戏的想法,就顺便学习了一下cocos,很惊异的它的脚本编写语言竟然支持js,正好以前对js有一定的了解,就临时拿起来了. 这是来自官方的一个实例,不过在参考过程中,发 ...
- 辉哥用的这种方法实现ZABBIX的MYSQL批量监控
不错的.集中和分布式,总是一对要解决的问题.应该可以再想更好的策略~~ 一.方案需求及思路 因跑MySQL服务的服务器比较多,并且每台服务器可能会运行多个不同端口的数据库,如果单独手动一台一台去修改a ...
- 静态与动态IP设置
静态IP设置 netsh interface ipv4 set address name="本地连接" source=static addr=192.168.0.212 (这个地方 ...
- 动态规划:NOI 2009 管道取珠
[NOI2009] 管道取珠 输入文件:ballb.in 输出文件:ballb.out 简单对比 时间限制:1 s 内存限制:512 MB #include <iostream> ...
- OSGI在Eclipse中执行-console出错的问题
在Eclipse中安装osgi插件后,执行出现异常:
- QTP自传之web常用对象
随着科技的进步,“下载-安装-运行”这经典的三步曲已离我们远去.web应用的高速发展,改变了我们的思维和生活习惯,同时也使web方面的自动化测试越来越重要.今天,介绍一下我对web对象的识别,为以后的 ...
- Listview加载更多是,恢复到原来的位置,如果不加特殊处理,总是跳转第一条
1.记录listView滚动到的位置的坐标,然后利用listView.scrollTo精确的进行恢复 listView.setOnScrollListener(new OnScrollListener ...
- Linux内存寻址之分段机制
前言 最近在学习Linux内核,读到<深入理解Linux内核>的内存寻址一章.原本以为自己对分段分页机制已经理解了,结果发现其实是一知半解.于是,查找了很多资料,最终理顺了内存寻址的知识. ...