题目大意:

http://poj.org/problem?id=3621

题解:

首先我们容易发现最优的路线一定只经过一个环。
所以我们可以把点权合并到边权上.
然后就转化为了一个01分数规划问题
求解即可

#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
typedef long long ll;
inline void read(int &x){x=0;char ch;bool flag = false;while(ch=getchar(),ch<'!');if(ch == '-') ch=getchar(),flag = true;while(x=10*x+ch-'0',ch=getchar(),ch>'!');if(flag) x=-x;
}
const int maxn = 1024;
const int maxm = 5010;
const double eps = 1e-6;
inline int dcmp(const double &x){if(x < eps && x > -eps) return 0;return x > 0 ? 1 : -1;
}
struct Edge{int to,next,d;double dis;
}G[maxm<<1];
int head[maxn],cnt;
void add(int u,int v,int d){G[++cnt].to = v;G[cnt].next = head[u];head[u] = cnt;G[cnt].d = d;
}
double dis[maxn];
bool inq[maxn];
#define v G[i].to
bool dfs(int u){inq[u] = true;for(int i = head[u];i;i=G[i].next){if(dis[v] > dis[u] + G[i].dis){dis[v] = dis[u] + G[i].dis;if(inq[v]) return true;if(dfs(v)) return true;}}inq[u] = false;return false;
}
#undef v
int w[maxn],n,m;
inline bool check(double mid){memset(inq,0,sizeof inq);memset(dis,0,sizeof dis);for(int i=1;i<=cnt;++i)G[i].dis = mid*G[i].d - w[G[i].to];for(int i=1;i<=n;++i) if(dfs(i)) return true;return false;
}
int main(){read(n);read(m);for(int i=1;i<=n;++i) read(w[i]);for(int i=1,u,v,d;i<=m;++i){read(u);read(v);read(d);add(u,v,d);//add(v,u,d);}double l = .0,r = 1e9;while((r-l) > eps){double mid = (l+r)/2;if(check(mid)) l = mid;else r = mid;}printf("%.2lf\n",l);getchar();getchar();return 0;
}

转载于:https://www.cnblogs.com/Skyminer/p/6475845.html

poj 3621 Sightseeing Cows 01分数规划相关推荐

  1. poj3621 Sightseeing Cows --- 01分数规划

    典型的求最优比例环问题 參考资料: http://blog.csdn.net/hhaile/article/details/8883652 此题中,给出每一个点和每条边的权值,求一个环使 ans=∑点 ...

  2. poj 2976 Dropping tests 01分数规划

    题目大意: http://poj.org/problem?id=2976 题解: 裸的01分数规划 #include <cstdio> #include <cstring> # ...

  3. POJ 3621 Sightseeing Cows

    SPFA+0/1分数规划. CODE: #include <iostream> #include <cstdlib> #include <cstdio> #incl ...

  4. POJ 3621 Sightseeing Cows [最优比率环]

    感觉去年9月的自己好$naive$ http://www.cnblogs.com/candy99/p/5868948.html 现在不也是嘛 裸题,具体看学习笔记 二分答案之后判负环就行了 $dfs$ ...

  5. POJ 3621 Sightseeing Cows(最优比率环+spfa的dfs判环优化)

    题目链接 题目大意:给你一个有向图,每个点都有一个权值,每条边都有一个长度,需要找到一个各点权值和/各边长度和 最大的环出来,输出这个比值. 分析:假设结点权值为wiw_iwi​,边的长度为lil_i ...

  6. POJ-3621 Sightseeing Cows 最优比率环、01分数规划

    题目链接:http://poj.org/problem?id=3621 这题是01分数规划问题,详细资料点这里.有了01分数规划的基础后,这个题目就很简单了.构建函数f(mid)=Σ(w[i]-mid ...

  7. POJ 2728 01分数规划

    题意: 最优比率生成树,要求生成树中的所有边的花费与所有边的长度的比值最小 题解: 01分数规划,详见http://www.cnblogs.com/proverbs/archive/2013/01/0 ...

  8. POJ 2976 01分数规划基础题目

    题意:       给你一组"数",一共n个,每个数有两个权值,价钱a[i],代价b[i],让你选择n - k使得 sigma(a[i]) / sigma(b[i]) * 100 ...

  9. 二分+01分数规划+最大化平均值 Dropping tests POJ - 2976

    题意: 给你若n个分数,分子a[i]a[i]a[i],分母b[i]b[i]b[i],使满足公式100⋅∑i=1nai∑i=1nbi100\cdot\tfrac{\sum_{i=1}^{n} a_{i} ...

最新文章

  1. OCP 12c最新考试原题及答案(071-3)
  2. 有关线程的相关知识(下)
  3. js及jQuery实现checkbox的全选、反选和全不选
  4. Java线程状态分析
  5. c语言中的所有代码大全,C语言库函数代码大全
  6. AVB中将公钥转换成字符数组头文件的实现
  7. 30岁的你收入是多少?用数据可视化,看看大家的30岁工资真相
  8. 转载浅谈MFC内存泄露检测及内存越界访问保护机制
  9. IE浏览器无法通过ftp:\\192.168.xxx.xxx连接ftp服务器
  10. 实对称矩阵的奇异值等于特征值
  11. python 计算变量的IV值
  12. 由于您的系统没有安装html help,教你解决Chrome浏览器未安装flash控件方法
  13. 昇腾modelzoo复现yolov4_v1(模型训练+网络定义)
  14. 正则表达式匹配英文和法文
  15. 论文笔记——News Recommendation with Topic-Enriched Knowledge Graphs
  16. SAP中通过格式调整解决导出EXCEL表字段显示不全问题
  17. 本地部署 Whisper 及 WhisperDesktop
  18. JDK1.8 HashMap源码分析
  19. git命令详解( 五 )
  20. 疲劳驾驶监测方案_一种基于手机的疲劳驾驶监测方法与流程

热门文章

  1. hotmail发送邮件html,HTML电子邮件中的链接在Hotmail中不起作用
  2. Linux下coredump调试1:使用
  3. java 关闭启动日志,求助啊无法启动java了点开就是报错要求查看日志
  4. 【java】SPI机制详解
  5. 【ElasticSearch】es Elasticsearch压测实战 II esrally 进阶实战 笔记
  6. 60-10-015-集成-(kylin On Druid)-Build CUBE的时候每一步都做了什么
  7. MyIbatis :不使用XML和注解@Mapper以及MapperScan
  8. 【kafka】produce response correlation id xxx on topic-partition retrying Error: NETWORK_EXCEPTION
  9. Spring Boot Starter 常用列表
  10. One of the two will be used. Which one is undefined.