P1768 天路

题目描述

“那是一条神奇的天路诶~,把第一个神犇送上天堂~”,XDM先生唱着这首“亲切”的歌曲,一道猥琐题目的灵感在脑中出现了。

和C_SUNSHINE大神商量后,这道猥琐的题目终于出现在本次试题上了,旨在难到一帮大脑不够灵活的OIer们(JOHNKRAM真的不是说你……)。

言归正传,小X的梦中,他在西藏开了一家大型旅游公司,现在,他要为西藏的各个景点设计一组铁路线。但是,小X发现,来旅游的游客都很挑剔,他们乘火车在各个景点间游览,景点的趣味当然是不用说啦,关键是路上。试想,若是乘火车一圈转悠,却发现回到了游玩过的某个景点,花了一大堆钱却在路上看不到好的风景,那是有多么的恼火啊。

所以,小X为所有的路径定义了两个值,Vi和Pi,分别表示火车线路的风景趣味度和乘坐一次的价格。现在小X想知道,乘客从任意一个景点开始坐火车走过的一条回路上所有的V之和与P之和的比值的最大值。以便为顾客们推荐一条环绕旅游路线(路线不一定包含所有的景点,但是不可以存在重复的火车路线)。

于是,小X梦醒之后找到了你……

输入输出格式

输入格式:

第一行两个正整数N,M,表示有N个景点,M条火车路线,火车路线是单向的。

以下M行,每行4个正整数,分别表示一条路线的起点,终点,V值和P值。

注意,两个顶点间可能有多条轨道,但一次只能走其中的一条。

输出格式:

一个实数,表示一条回路上最大的比值,保留1位小数。

若没有回路,输出-1。

输入输出样例

输入样例#1:

5 6
1 2 1 1
4 1 6 2
5 4 8 1
2 3 2 2
5 2 4 1
3 5 6 4

输出样例#1:

2.3

说明

对于30%的数据,1≤N≤100,1≤M≤20;

对于60%的数据,1≤N≤3,000,1≤M≤2,000;

对于100%的数据,1≤N≤7,000,1≤M≤20,000,1≤Vi,Pi≤1,000.

保证答案在200以内.

思路:二分+spfa判环。

错因:不明原因的TLE。

80分代码。

#include<deque>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define MAXN 50010
using namespace std;
int n,m,tot;
double l,r,mid;
double intrest[MAXN],cap[MAXN],dis[MAXN];
int to[MAXN],head[MAXN],net[MAXN],vis[MAXN],num[MAXN];
inline int read(){char ch=getchar();int data=0;while(ch<'0'||ch>'9') ch=getchar();do{data=data*10+ch-'0';ch=getchar();}while(ch>='0' && ch<='9');return data;
}
inline void add(int u,int v,double w,double p){to[++tot]=v;net[tot]=head[u];intrest[tot]=w;cap[tot]=p;head[u]=tot;
}
inline bool spfa(int s){deque<int>que;memset(vis,0,sizeof(vis));memset(num,0,sizeof(num));memset(dis,0x7f,sizeof(dis));que.push_back(s);dis[s]=0;vis[s]=1;num[s]++;while(!que.empty()){int now=que.front();que.pop_front();vis[now]=0;for(int i=head[now];i;i=net[i])if(dis[to[i]]>dis[now]+mid*cap[i]-intrest[i]){dis[to[i]]=dis[now]+mid*cap[i]-intrest[i];if(!vis[to[i]]){if(dis[to[i]]>dis[now])    que.push_back(to[i]);else    que.push_front(to[i]);vis[to[i]]=1;num[to[i]]++;if(num[to[i]]>n)    return true;}}}return false;
}
inline bool check(double x){if(spfa(0))    return true;else return false;
}
int main(){n=read();m=read();for(int i=1;i<=m;i++){int x,y;double v,p;x=read();y=read();scanf("%lf%lf",&v,&p);add(x,y,v,p);}for(int i=1;i<=n;i++)    add(0,i,0,0);l=0;r=500;while(r-l>0.01){mid=(l+r)/2;if(check(mid))    l=mid;else r=mid;}if(l==0)    cout<<"-1";else printf("%.1lf",r);
}

转载于:https://www.cnblogs.com/cangT-Tlan/p/7461818.html

洛谷 P1768 天路相关推荐

  1. 洛谷P1768 天路

    题目描述 "那是一条神奇的天路诶~,把第一个神犇送上天堂~",XDM先生唱着这首"亲切"的歌曲,一道猥琐题目的灵感在脑中出现了. 和C_SUNSHINE大神商量 ...

  2. 浴谷 P1768 天路

    P1768 天路 题目描述 "那是一条神奇的天路诶~,把第一个神犇送上天堂~",XDM先生唱着这首"亲切"的歌曲,一道猥琐题目的灵感在脑中出现了. 和C_SUN ...

  3. 天路 洛谷p1768

    题目描述 "那是一条神奇的天路诶~,把第一个神犇送上天堂~",XDM先生唱着这首"亲切"的歌曲,一道猥琐题目的灵感在脑中出现了. 和C_SUNSHINE大神商量 ...

  4. #0/1分数规划,SPFA,负环#洛谷 1768 天路

    题目链接 分析 可以发现,这是一道0/1分数规划的题目,需要二分答案,然后判定是否存在负环,所以说bfs貌似不高效,那就用dfs吧,若二分答案为0,即不合法 代码 #include <cstdi ...

  5. 洛谷-题解 P2672 【推销员】

    独门思路!链表加优先队列! 这题一望,贪心是跑不掉了,但是我贪心并不好,所以想到了一个复杂一些但思路更保稳的做法 思路: 1 因为是离线操作,所以我们可以倒着求,先求x=n的情况,因为那样直接就知道了 ...

  6. 洛谷 P1142 轰炸

    洛谷 P1142 轰炸 题目描述 "我该怎么办?"飞行员klux向你求助. 事实上,klux面对的是一个很简单的问题,但是他实在太菜了. klux要想轰炸某个区域内的一些地方,它们 ...

  7. 洛谷 P1387 最大正方形

    P1387 最大正方形 题目描述 在一个n*m的只包含0和1的矩阵里找出一个不包含0的最大正方形,输出边长. 输入输出格式 输入格式: 输入文件第一行为两个整数n,m(1<=n,m<=10 ...

  8. 洛谷P2763 试题库问题

    题目:https://www.luogu.org/problemnew/show/P2763 题目描述 «问题描述: 假设一个试题库中有n道试题.每道试题都标明了所属类别.同一道题可能有多个类别属性. ...

  9. 动态规划——洛谷_P1057传球游戏

    题目: 题目描述 上体育课的时候,小蛮的老师经常带着同学们一起做游戏.这次,老师带着同学们一起做传球游戏.游戏规则是这样的:n个同学站成一个圆圈,其中的一个同学手里拿着一个球,当老师吹哨子时开始传球, ...

最新文章

  1. 2022-2028年中国涤纶市场投资分析及前景预测报告
  2. C9---include,编译
  3. 大学生一定记得要做的十八件事情
  4. java access ole word,利用OLE对象实现Word文档操作
  5. nginx 开启高效文件传输模式
  6. 字典树(Trie树)
  7. android:layout 冒号,android-json解析及简单例子(补汉6个汉字字).pdf
  8. mysql数据库存储多语言_数据库---数据控制语言(DCL)
  9. android 生成签名和SHA1签名信息
  10. 关于软件实施经验分享
  11. 异速联客户端可以删除服务器文件,异速联客户端怎么连接服务器
  12. rxtx for java_RXTX实现JAVA串口编程
  13. codesmith for java_codesmith 入门介绍【转载】
  14. UiPath中文教程PDF
  15. 在计算机上格式u盘启动,请问U盘制作成启动盘后插电脑上显示0字节,打不开也无法格式化,提示磁盘写有保护怎么回事?...
  16. 达人评测 联想小新Pad Pro/Pad Plus怎么样
  17. 用计算解决科学难题,用算法让生活变得更好
  18. chage(charger)
  19. matlab取矩阵元素的模,matlab – 提取矩阵元素
  20. 长URL链接转短链接算法

热门文章

  1. 面试 腾讯 阿里 百度
  2. 魔兽争霸3 视野插件
  3. 64位的电脑比32位的电脑跑的快么?「多图预警」
  4. 英语的“大便、小便、放屁”真正说法
  5. matlab截取左上四分之一,matlab 图像剪切 图像裁剪 图像四分之一 代码
  6. python画四个相切的圆_如何用python绘制四分之一圆曲线
  7. c# winForm父子窗口信息交互方式介绍
  8. 性别年龄论文阅读(2)——CACD2000
  9. FPGA—HDMI 显示器驱动设计与验证(附代码)
  10. Python requests爬取图片