codevs1183 泥泞的道路(01分数规划)
1183 泥泞的道路
CS有n个小区,并且任意小区之间都有两条单向道路(a到b,b到a)相连。因为最近下了很多暴雨,很多道路都被淹了,不同的道路泥泞程度不同。小A经过对近期天气和地形的科学分析,绘出了每条道路能顺利通过的时间以及这条路的长度。
现在小A在小区1,他希望能够很顺利地到达目的地小区n,请帮助小明找出一条从小区1出发到达小区n的所有路线中(总路程/总时间)最大的路线。请你告诉他这个值。
第一行包含一个整数n,为小区数。
接下来n*n的矩阵P,其中第i行第j个数表示从小区i到小区j的道路长度为Pi,j。第i行第i个数的元素为0,其余保证为正整数。
接下来n*n的矩阵T,第i行第j个数表示从小区i到小区j需要的时间Ti,j。第i行第i个数的元素为0,其余保证为正整数。
写入一个实数S,为小区1到达n的最大答案,S精确到小数点后3位。
3
0 8 7
9 0 10
5 7 0
0 7 6
6 0 6
6 2 0
2.125
【数据说明】
30%的数据,n<=20
100%的数据,n<=100,p,t<=10000
/* 01分数规划 总路程/总时间=平均速度 可以二分v,建图spfa最长路 判断S总-v*T总=0为最优解,>0当前v满足。 若有正权回路则当前v一定满足(求最长路可以判正环)。 */ #include<iostream> #include<cstdio> #include<cstring> #include<queue>#define N 1001 #define inf 0x3f3f3f3fusing namespace std; int n,m,ans,cnt,flag; int s[N][N],t[N][N],in[N]; double dis[N][N],d[N]; bool inq[N]; queue<int>q;void clear() {memset(inq,0,sizeof inq);while(!q.empty()) q.pop();memset(in,0,sizeof in); for(int i=1;i<=n;i++) d[i]=-inf; }bool spfa(int u) {clear();q.push(u);inq[u]=1;d[u]=0;in[u]=0;while(!q.empty()){int now=q.front();q.pop();inq[now]=0; in[now]++;if(in[now]>=n) return true;for(int i=1;i<=n;i++){if(i==now) continue;if(d[i]<d[now]+dis[now][i] && s[now][i]){d[i]=d[now]+dis[now][i];if(!inq[i]) q.push(i),inq[i]=1;} }}return d[n]>0; }bool check(double x) {for(int i=1;i<=n;i++) for(int j=1;j<=n;j++)dis[i][j]=s[i][j]-t[i][j]*x;return spfa(1); }int main() {scanf("%d",&n);for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) scanf("%d",&s[i][j]);for(int i=1;i<=n;i++) for(int j=1;j<=n;j++)scanf("%d",&t[i][j]);double eps=0.00001,l=0,r=10000;while(r-l>eps){double mid=(l+r)/2;if(check(mid)) l=mid;else r=mid;}printf("%.3lf\n",l); }
转载于:https://www.cnblogs.com/L-Memory/p/9748383.html
codevs1183 泥泞的道路(01分数规划)相关推荐
- bzoj 1690: [Usaco2007 Dec]奶牛的旅行(01分数规划--最优比率环)
01分数规划问题: 给你n个物品,a[i]表示第i个物品的收益,b[i]表示代价,x[i]表示选或不选,求一个最佳方案使得下式取值最大 通用解: 当然是从式子上考虑,定义函数F[cnt]如下: 其中c ...
- BZOJ1690 Usaco2007 Dec 奶牛的旅行 【01分数规划】
BZOJ1690 Usaco2007 Dec 奶牛的旅行 题目描述 作为对奶牛们辛勤工作的回报,Farmer John决定带她们去附近的大城市玩一天.旅行的前夜,奶牛们在兴奋地讨论如何最好地享受这难得 ...
- poj2976(0-1分数规划)
0-1分数规划 设x[i]等于1或0. 则我们所求的比率 rate = ∑(cost[i] * x[i]) / ∑(cost[i] * x[i]), 0≤i<m . z( rate ) = ∑( ...
- 点分治问题 ----------- luoguP2942 [WC2010]重建计划 [点分治 + bfs + 单调队列 + 预处理建树 + 二分 + 01分数规划]
题目链接 解题思路: 1.对于这个Avgvalue=∑e∈sv(e)∣s∣Avgvalue = \frac{\sum_{e\in s}v(e)}{|s|}Avgvalue=∣s∣∑e∈sv(e) ...
- 解题报告:AcWing 1165. 单词环(01分数规划、hash、经验优化)
本题的关键在于: 建图 01分数规划 本题的数据过大,如果直接spfa判断会TLE,因此我们使用经验优化,就是如果所有的点入队的次数过多,比如大于100000,那么我们直接认为它是存在正环的.(免去T ...
- 模板 - 判断负环(超时高效优化技巧)、01分数规划
整理的算法模板合集: ACM模板 判断负环 判正环求最长路,判负环求最短路 int n; // 总点数 int h[N], w[N], e[N], ne[N], idx; // 邻接表存储所有边 in ...
- 【图论专题】负环与01分数规划
整理的算法模板合集: ACM模板 题目列表: 题目 算法 AcWing 904. 虫洞 spfa判负环 AcWing 361. 观光奶牛 最优比率环.01分数规划 AcWing 1165. 单词环 0 ...
- POJ2728 Desert King ——01分数规划Dinkelbach迭代法+最小生成树prim算法
首先,纪念我用Linux系统AC的第一题- 安装这个万恶的NOI Linux系统费了6小时的时间,不过好在最后终于装上了,但是因为我安装的Linux系统比较烂,还遭到了小花儿和js的鄙视,唉,本人 ...
- POJ 2728 01分数规划
题意: 最优比率生成树,要求生成树中的所有边的花费与所有边的长度的比值最小 题解: 01分数规划,详见http://www.cnblogs.com/proverbs/archive/2013/01/0 ...
最新文章
- 移动应用开发—— 如何搭建开发大型的应用架构?
- Linux下查看Nginx,tomcat等的并发连接数和连接状态
- 26.2. Web UI
- 如何锁定计算机硬盘,Win7系统怎么锁住磁盘|Win7系统锁住磁盘的详细步骤
- win10 jenkins svn android studio 自动化打包教程 以及一些问题的解决办法
- 数组中两个字符串的最小距离
- mysql有没有单机版?
- python找零钱问题_Python基于回溯法子集树模板解决找零问题示例
- SpringMVC表单验证器的使用
- 第九节:JWT简介和以JS+WebApi为例基于JWT的安全校验
- 【K8S】Docker向私有仓库拉取/推送镜像报错(http: server gave HTTP response to HTTPS client)
- java l1 l2缓存,Java 两级缓存框架
- matlab自带SVM算法例子(附函数详解)
- 你可能不知道的shell、bash二三事(Centos 7)
- 批量保存微信收藏的表情包
- python如何设置开头注释_小疯谈python:(二)python语言的基本语法元素
- IM系统架构设计之浅见
- c++ opencv图像拼接
- 编译make px4_fmu-v2_default upload时,报错ERROR Board can accept larger flash images (2080768 bytes)
- android 语音适配,Android多语言适配繁体中文
热门文章
- css border制作小三角形状及应用(兼容IE6)
- 纯css的accordion效果
- Building High Performance Websites (1) CDN
- [导入]文件,图片操作相关.
- Web服务器和应用程序服务器有什么区别
- java 文件分隔符_Java文件分隔符
- dice系数 交叉熵_语义分割中的损失函数
- php 复杂密码生成,php随机密码生成器
- matlab柱状斜线_Matlab:柱状图饼状图填充不同条纹
- 用stringstream可以用指定字符分割字符串