poj 3621 Sightseeing Cows 01分数规划
题目大意:
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分数规划相关推荐
- poj3621 Sightseeing Cows --- 01分数规划
典型的求最优比例环问题 參考资料: http://blog.csdn.net/hhaile/article/details/8883652 此题中,给出每一个点和每条边的权值,求一个环使 ans=∑点 ...
- poj 2976 Dropping tests 01分数规划
题目大意: http://poj.org/problem?id=2976 题解: 裸的01分数规划 #include <cstdio> #include <cstring> # ...
- POJ 3621 Sightseeing Cows
SPFA+0/1分数规划. CODE: #include <iostream> #include <cstdlib> #include <cstdio> #incl ...
- POJ 3621 Sightseeing Cows [最优比率环]
感觉去年9月的自己好$naive$ http://www.cnblogs.com/candy99/p/5868948.html 现在不也是嘛 裸题,具体看学习笔记 二分答案之后判负环就行了 $dfs$ ...
- POJ 3621 Sightseeing Cows(最优比率环+spfa的dfs判环优化)
题目链接 题目大意:给你一个有向图,每个点都有一个权值,每条边都有一个长度,需要找到一个各点权值和/各边长度和 最大的环出来,输出这个比值. 分析:假设结点权值为wiw_iwi,边的长度为lil_i ...
- POJ-3621 Sightseeing Cows 最优比率环、01分数规划
题目链接:http://poj.org/problem?id=3621 这题是01分数规划问题,详细资料点这里.有了01分数规划的基础后,这个题目就很简单了.构建函数f(mid)=Σ(w[i]-mid ...
- POJ 2728 01分数规划
题意: 最优比率生成树,要求生成树中的所有边的花费与所有边的长度的比值最小 题解: 01分数规划,详见http://www.cnblogs.com/proverbs/archive/2013/01/0 ...
- POJ 2976 01分数规划基础题目
题意: 给你一组"数",一共n个,每个数有两个权值,价钱a[i],代价b[i],让你选择n - k使得 sigma(a[i]) / sigma(b[i]) * 100 ...
- 二分+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} ...
最新文章
- OCP 12c最新考试原题及答案(071-3)
- 有关线程的相关知识(下)
- js及jQuery实现checkbox的全选、反选和全不选
- Java线程状态分析
- c语言中的所有代码大全,C语言库函数代码大全
- AVB中将公钥转换成字符数组头文件的实现
- 30岁的你收入是多少?用数据可视化,看看大家的30岁工资真相
- 转载浅谈MFC内存泄露检测及内存越界访问保护机制
- IE浏览器无法通过ftp:\\192.168.xxx.xxx连接ftp服务器
- 实对称矩阵的奇异值等于特征值
- python 计算变量的IV值
- 由于您的系统没有安装html help,教你解决Chrome浏览器未安装flash控件方法
- 昇腾modelzoo复现yolov4_v1(模型训练+网络定义)
- 正则表达式匹配英文和法文
- 论文笔记——News Recommendation with Topic-Enriched Knowledge Graphs
- SAP中通过格式调整解决导出EXCEL表字段显示不全问题
- 本地部署 Whisper 及 WhisperDesktop
- JDK1.8 HashMap源码分析
- git命令详解( 五 )
- 疲劳驾驶监测方案_一种基于手机的疲劳驾驶监测方法与流程
热门文章
- hotmail发送邮件html,HTML电子邮件中的链接在Hotmail中不起作用
- Linux下coredump调试1:使用
- java 关闭启动日志,求助啊无法启动java了点开就是报错要求查看日志
- 【java】SPI机制详解
- 【ElasticSearch】es Elasticsearch压测实战 II esrally 进阶实战 笔记
- 60-10-015-集成-(kylin On Druid)-Build CUBE的时候每一步都做了什么
- MyIbatis :不使用XML和注解@Mapper以及MapperScan
- 【kafka】produce response correlation id xxx on topic-partition retrying Error: NETWORK_EXCEPTION
- Spring Boot Starter 常用列表
- One of the two will be used. Which one is undefined.