题意:给定一张有向稠密图和通过每条边的时间和路程,问从1到n的路程/时间 最大为多少

正解:SPFA+二分答案

开始做的时候,想直接跑图论,后来发现好像不对(不然数据范围怎么这么小)

但是显然要用到图论,机智的我就想到了二分答案。

考虑,假如有一个ans,那么如果存在length i / time i >=ans(i属于路径上的边),那么显然更优 ,则可发现问题可转换为如果一个答案更优,那么对于以 length i - ans*time i 为权值,重新构的图中,如果到达n的最长路不小于n,显然答案可以更优,只需要二分答案就可以了.另外如果有正权环显然是可以的  

唯独要注意的是,精度要求要满足题意,显然不能只分到第三位小数就停了,那样的话会gi

#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<queue>
#include<vector>
using namespace std;
const int MAXN = ;
int n;
int tim[MAXN][MAXN],s[MAXN][MAXN];
long double ju[MAXN][MAXN];
double dis[MAXN];
bool vis[MAXN];
int num[MAXN];//记录经过次数,判环
long double ans;
//二分答案+SPFA queue<int>q; inline int getint()
{
int w=,q=;
char c=getchar();
while((c<'' || c>'') && c!='-') c=getchar();
if (c=='-') q=, c=getchar();
while (c>='' && c<='') w=w*+c-'', c=getchar();
return q ? -w : w;
} inline bool work(long double x){//跑最长路径
for(int i=;i<=n;i++) dis[i]=-0x7ffffff;//置为更小的负值
// memset(dis,0,sizeof(dis));
ans=x; for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
ju[i][j]=s[i][j]-x*tim[i][j]; memset(vis,,sizeof(vis));
memset(num,,sizeof(num));
while(!q.empty()) q.pop(); q.push(); vis[]=; dis[]=;
while(!q.empty()) {
int u=q.front();
q.pop(); vis[u]=;
for(int i=;i<=n;i++)
if(i!=u){
if(dis[i]<dis[u]+ju[u][i]) {
dis[i]=dis[u]+ju[u][i];
if(!vis[i]) {
vis[i]=;
q.push(i);
num[i]++;
if(num[i]>=n) return true;
}
}
}
} if(dis[n]>=) return true;//存在更优的答案
return false;
} int main()
{
n=getint();
for(int i=;i<=n;i++) for(int j=;j<=n;j++) s[i][j]=getint();
for(int i=;i<=n;i++) for(int j=;j<=n;j++) tim[i][j]=getint(); long double l=0.00,r=10000.00;
//long double jingdu=0.00001;
long double jingdu=0.0001;
while(r-l-jingdu>=) {
long double mid=l+(r-l)/2.0;
if(work(mid)) l=mid;
else r=mid;
}
printf("%.3lf",(double)l);
return ;
}

codevs1183泥泞的道路的更多相关文章

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

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

  2. codevs1183 泥泞的道路

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

  3. 【Codevs1183】泥泞的道路

    Position: http://codevs.cn/problem/1183/ List Codevs1183 泥泞的道路 List Description Input Output Sample ...

  4. Codevs 1183 泥泞的道路

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

  5. TYVJ P1577 泥泞的道路

    题目链接:http://www.tyvj.cn/p/1577# P1577 泥泞的道路 时间: 1000ms / 空间: 131072KiB / Java类名: Main 描述 公园中有n个景点,编号 ...

  6. 泥泞的道路(codevs 1183)

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

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

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

  8. CODEVS——T1183 泥泞的道路

    时间限制: 1 s  空间限制: 128000 KB 题目等级 : 钻石 Diamond 题解  查看运行结果 题目描述 Description CS有n个小区,并且任意小区之间都有两条单向道路(a到 ...

  9. codevs 1183 泥泞的道路 (二分+SPFA+差分约束)

    /* 二分答案(注意精度) 对于每一个答案 有(s1+s2+s3...)/(t1+t2+t3...)>=ans 时符合条件 这时ans有变大的空间 对于上述不等式如果枚举每一条路显得太暴力 化简 ...

随机推荐

  1. MySQL触发器如何正确使用

    MySQL触发器如何正确使用 2010-05-18 15:58 佚名 博客园 字号:T | T 我们今天主要向大家介绍的是MySQL触发器进行正确使用,其中包括对MySQL触发器发器的语句创建,触发时 ...

  2. C# 发送邮件,QQ企业邮箱测试成功

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.N ...

  3. 借个例子说明sed的模式空间,以及针对模式空间的N,P,D用法

    下面是我们要处理的文本:题目要求是把所有散列在不同行的同一个中括号中的数据集中在一起, 见下表就秒懂了吧 处理前的文本 处理后的文本 [123456][ASDEF][ABCD123WF][789ADC ...

  4. P3376 【模板】网络最大流

    P3376 [模板]网络最大流 题目描述 如题,给出一个网络图,以及其源点和汇点,求出其网络最大流. 输入输出格式 输入格式: 第一行包含四个正整数N.M.S.T,分别表示点的个数.有向边的个数.源点 ...

  5. 4809 江哥的dp题c

    4809 江哥的dp题c  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题解       题目描述 Description 有两个数x,y,一开始x=1,y= ...

  6. 【转】加快网站访问速度——Yslow极限优化

    Yslow是一套雅虎的网页评分系统,详细的列出了各项影响网页载入速度的参数,这里不做多说. 我之前就一直参考Yslow做博客优化,经过长时间的学习也算是有所收获,小博的YslowV2分数达到了94分( ...

  7. C# FTP上传

    public class FtpHelper { public FtpHelper(string p_url, string p_user, string p_password) { if (!p_u ...

  8. Enum引发的血案,反思

    前几天公司产品更新版本,更新完后不少用户反应原先保存的report的一些表在新版本打开后设置突然变了,本来选的第六个,现在打开变成第四个了.领导要求赶紧查出原因修改好,发紧急补丁.啊啊..发紧急补丁可 ...

  9. unity3d CarWaypoints插件

    编写初衷: 1.网上没有现成的好用的waypoints插件 2.自己在做一个赛车游戏,如果没有这款插件的话在制作游戏的过程中会被累成狗 3.从来没有接触过插件方面的东西,所以想自己尝试一下 插件用途: ...

  10. 项目分享二:APP 小红点中数字的处理

    小红点,是 APP 中最常见的一个功能,我们先来看一下面的案例,下图中,待评价的商品有 2 个,点击“评价晒单”按钮进行评价后,那么待评价数量应该变成 1,那么这个功能是如何去实现的呢? 一般来说,实 ...