【题解】Luogu P2868 [USACO07DEC] 观光奶牛 Sightseeing Cows 最优比率环
时间:2019-10-24
本文章向大家介绍【题解】Luogu P2868 [USACO07DEC] 观光奶牛 Sightseeing Cows 最优比率环,主要包括【题解】Luogu P2868 [USACO07DEC] 观光奶牛 Sightseeing Cows 最优比率环使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
开刷图论题
所以为什么上来就这么难aaa
可以证明,当路径为一个简单环(≥2)时,比率最小
是不是只有我这个菜鸡没看清题想了半天为什么是环
证明
二分一个mid使比率为$mid<{\frac {\sum Fi}{\sum Ti}}$
变一下 ${\sum_{i=1}^{n} Fi-Ti*mid}>0$
发现变成了找正环,又不好做,两边同时乘-1转化为找负环
spfa判负环
code
1 #include<bits/stdc++.h> 2 using namespace std; 3 namespace gengyf{ 4 #define int long long 5 #define eps 1e-5 6 const int maxn=1100; 7 inline int read(){ 8 int x=0,f=1;char s=getchar(); 9 while(s<'0'||s>'9'){if(s=='-')f=-1;s=getchar();} 10 while(s>='0'&&s<='9'){x=x*10+s-'0';s=getchar();} 11 return f*x; 12 } 13 int n,m; 14 struct edge{ 15 int nxt,to,w; 16 }e[5010]; 17 int head[maxn],cnt,fun[maxn],vis[maxn],num[maxn]; 18 double d[maxn]; 19 inline void add(int from,int to,int w){ 20 e[++cnt].to=to;e[cnt].w=w; 21 e[cnt].nxt=head[from];head[from]=cnt; 22 } 23 bool check(double mid){ 24 queue<int>q; 25 memset(d,0,sizeof(d)); 26 for(int i=1;i<=n;i++){ 27 q.push(i);vis[i]=num[i]=1; 28 } 29 while(!q.empty()){ 30 int x=q.front();q.pop(); 31 vis[x]=0; 32 for(int i=head[x];i;i=e[i].nxt){ 33 int y=e[i].to;double dis=e[i].w; 34 if(d[y]>d[x]+mid*dis-(double)fun[x]){ 35 d[y]=d[x]+mid*dis-(double)fun[x]; 36 if(!vis[y]){ 37 q.push(y);vis[y]=1; 38 if(++num[y]>=n)return 0; 39 } 40 } 41 } 42 } 43 return 1; 44 } 45 int main(){ 46 n=read();m=read(); 47 for(int i=1;i<=n;i++){ 48 fun[i]=read(); 49 } 50 for(int i=1;i<=m;i++){ 51 int u,v,w; 52 u=read();v=read();w=read(); 53 add(u,v,w); 54 } 55 double l=0,r=maxn,mid; 56 while(r-l>eps){ 57 mid=(l+r)/2; 58 if(check(mid))r=mid; 59 else l=mid; 60 } 61 printf("%.2lf",l); 62 return 0; 63 } 64 /* 65 accuse 指责 66 acknowledge 承认 67 accustomed 习惯的 68 acquaintance 熟人 69 */ 70 } 71 signed main(){ 72 gengyf::main(); 73 return 0; 74 }
原文地址:https://www.cnblogs.com/gengyf/p/11730632.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 海康SDK开发步骤
- 《Scikit-Learn与TensorFlow机器学习实用指南》 第11章 训练深度神经网络(下)
- applet跨域访问的安全性问题(java.security.AccessControlException:access denied)
- JSON解析问题:net.sf.json.JSONException: There is a cycle in the hierarchy!
- 海康相机SDK联合c++标定
- 开发一个Node命令行小玩具全过程--高颜统计工具
- 消息未读之点不完的小红点(Node+Websocket)
- pkg版本规范管理自动化最佳实践
- 数据库驱动问题:MySQLNonTransientConnectionException
- 喜大普奔,es2019登场
- [译] Object.assign 和 Object Spread 之争, 用谁?
- 急速 debug 实战二(浏览器 - 调试线上篇)
- via the 'serverTimezone' configuration property
- 急速 debug 实战一(浏览器-基础篇)
- MongoDB系列一: Replica Set 集群搭建实战