POJ 3621 Sightseeing Cows
SPFA+0/1分数规划。
CODE:
#include <cstdlib>
#include <cstdio>
#include <cstring>
#include <queue>
using namespace std;
#define MAXN 1010
#define INF 0X3F3F3F3F
#define eps 1e-7
struct Edge
{
int v, next;
double w;
}edge[MAXN*5];
double d[MAXN], num[MAXN];
int first[MAXN];
int n, m, cnt;
void init()
{
cnt = 0;
memset(first, -1, sizeof(first));
}
void read_graph(int u, int v, double w)
{
edge[cnt].v = v, edge[cnt].w = w;
edge[cnt].next = first[u], first[u] = cnt++;
}
int spfa(int src, double mid)
{
queue<int> q;
bool inq[MAXN] = {0};
int ct[MAXN] = {0};
for(int i = 1; i <= n; i++) d[i] = (i == src)?0:INF;
q.push(src);
while(!q.empty())
{
int x = q.front(); q.pop();
inq[x] = 0, ct[x]++;
if(ct[x] >= n) return 0; //存在负环
for(int e = first[x]; e != -1; e = edge[e].next)
{
int v = edge[e].v;
double w = -num[v] + mid*edge[e].w;
if(d[v] > d[x] + w)
{
d[v] = d[x] + w;
if(!inq[v])
{
inq[v] = 1;
q.push(v);
}
}
}
}
return 1;
}
double BSearch()
{
double x = 0, y = 100.0, ans;
while((y-x) > eps)
{
double mid = x+(y-x)/2;
if(spfa(1, mid))
{
ans = mid;
y = mid;
}
else x = mid;
}
return ans;
}
int main()
{
scanf("%d%d", &n, &m);
init();
for(int i = 1; i <= n; i++)
{
scanf("%lf", &num[i]);
}
while(m--)
{
int u, v;
double w;
scanf("%d%d%lf", &u, &v, &w);
read_graph(u, v, w);
}
double ans = BSearch();
printf("%.2lf\n", ans);
return 0;
}
转载于:https://www.cnblogs.com/g0feng/archive/2012/10/24/2737665.html
POJ 3621 Sightseeing Cows相关推荐
- poj 3621 Sightseeing Cows 01分数规划
题目大意: http://poj.org/problem?id=3621 题解: 首先我们容易发现最优的路线一定只经过一个环. 所以我们可以把点权合并到边权上. 然后就转化为了一个01分数规划问题 求 ...
- 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 2456 Aggressive cows
题目传送门 1 /* 2 二分搜索:搜索安排最近牛的距离不小于d 3 */ 4 #include <cstdio> 5 #include <algorithm> 6 #incl ...
- POJ 1637 Sightseeing tour(最大流)
POJ 1637 Sightseeing tour 题目链接 题意:给一些有向边一些无向边,问能否把无向边定向之后确定一个欧拉回路 思路:这题的模型很的巧妙,转一个http://blog.csdn.n ...
- POJ 3621:Sightseeing Cows(最优比率环)
http://poj.org/problem?id=3621 题意:有n个点m条有向边,每个点有一个点权val[i],边有边权w(i, j).找一个环使得Σ(val) / Σ(w)最大,并输出. 思路 ...
- Sightseeing Cows POJ - 3621
题意: L个点,P边的点边带权的有向图,求一个环点权和与边权和比值的最大值. 题解: 01分数规划+判负环 详细看这里 还是套用01分数规划模型,点权为value[i],边权为cost[u],一个环为 ...
- POJ-3621 Sightseeing Cows 最优比率环、01分数规划
题目链接:http://poj.org/problem?id=3621 这题是01分数规划问题,详细资料点这里.有了01分数规划的基础后,这个题目就很简单了.构建函数f(mid)=Σ(w[i]-mid ...
- poj 1637 Sightseeing tour 混合欧拉图判定
POJ - 1637点我点我:-) Sightseeing tour Time Limit: 1000MS Memory Limit: 10000KB 64bit IO Format: %ll ...
最新文章
- 102TimeStatistic
- u-boot-1.1.6 设置新分区支持设备树
- 真正实时随机数的实现C++ _timeb _ftime(转)
- Android:浏览器跳转
- BZOJ4377: [POI2015]Kurs szybkiego czytania
- C#基础-获得当前程序的 空间名.类名.方法名
- 国内财务软件公司排名
- idea常用22种快捷键,脱离鼠标,便捷开发,赶紧收藏
- 2023北京邮电大学计算机考研信息汇总
- mac Error: EACCES: permission denied, mkdir './cache'
- Early stopping conditioned on metric `val_loss` which is not available. Available metrics are: loss,
- 酒水知识(六大基酒之威士忌_Whisky)
- 傻傻分不清:时间趋势项与时间虚拟变量
- 【unity shader/风格化水表面渲染/基础笔记】urp代码版05-焦散模拟
- ElasticSearch之Head插件集群健康问题
- Ubuntu使用Foxit Reader + GoldenDict实现PDF划译
- 基于javaWeb的毕业生论文管理系统
- 达梦数据库(DM8)基本使用方式
- 热转印打码机是如何实现打印的?
- 广义相对论基础【1】狭义相对论中的张量
热门文章
- python3猜数字小游戏代码示例
- Redis命令:DECR key减1操作
- linux下安装虚拟天文馆,如何在Ubuntu 20.04、18.04中安装Stellarium 0.20.0虚拟天文馆
- Linux下源码编译安装新版libxcb
- Ubuntu下安装谷歌浏览器(Google chrome)报错
- 什么是TCP三次握手?
- python中表头格式错误导入_python读csv文件时指定行为表头或无表头的方法
- 2.1.5 操作系统之线程概念与多线程模型
- stm32之电源管理(实现低功耗)
- 为什么要进行字节对齐?