poj3621 Sightseeing Cows --- 01分数规划
典型的求最优比例环问题
參考资料:
http://blog.csdn.net/hhaile/article/details/8883652
此题中,给出每一个点和每条边的权值,求一个环使 ans=∑点权/∑边权 最大。
由于题目要求一个环,并且必定是首尾相接的一个我们理解的纯粹的环,不可能是其它样子的环,
所以我们能够把一条边和指向的点看做总体处理。
上面方程能够化为:ans×e[i]-p[i]=0
以它为边权二分答案,spfa求负环,有负环则该ans可行,增大下界。
若一直不可行,则无解。
#include<cstdio>
#include<cstring>
#include<vector>
#include<queue>
#include<iostream>
#include<algorithm>
#include<cmath>
#define inf 0x3f3f3f3f
using namespace std;
#define N 1010
#define M 5010 struct node
{
int next,v,w;
}e[M];
int n,m,h,head[N],p[N],inq[N],outq[N];
double d[N]; void addedge(int a,int b,int c)
{
e[h].v=b;
e[h].w=c;
e[h].next=head[a];
head[a]=h++;
} bool spfa(int s,double ans)
{
int i,cnt=0;
for(i=0;i<=n;i++)
d[i]=2000000000;
memset(inq,0,sizeof inq);
memset(outq,0,sizeof outq);
d[s]=0;
inq[s]=1;
queue<int> q;
q.push(s);
while(!q.empty())
{
int x=q.front();
q.pop();
inq[x]=0;
outq[x]++;
cnt++;
if(outq[x]>n) return 0;
if(cnt>(n+m)<<1) return 0;
for(i=head[x];i!=-1;i=e[i].next)
{
int v=e[i].v;
if(d[v]>d[x]+ans*e[i].w-p[v])
{
d[v]=d[x]+ans*e[i].w-p[v];
if(!inq[v])
q.push(v);
}
}
}
return 1;
} int main()
{
int a,b,c,i;
double le,ri,mid;
while(~scanf("%d%d",&n,&m))
{
memset(head,-1,sizeof head);
h=0;
for(i=1;i<=n;i++)
scanf("%d",&p[i]);
for(i=0;i<m;i++)
{
scanf("%d%d%d",&a,&b,&c);
addedge(a,b,c);
}
le=0;ri=1010;
double ans=0;
while(ri-le>1e-5)
{
mid=(le+ri)/2.0;
if(spfa(1,mid))
{
ri=mid;
}
else
{
ans=mid;
le=mid;
}
}
printf("%.2lf\n",ans);//G++要用%f才干A
}
return 0;
}
poj3621 Sightseeing Cows --- 01分数规划的更多相关文章
- 洛谷P2868 [USACO07DEC]观光奶牛Sightseeing Cows(01分数规划)
题意 题目链接 Sol 复习一下01分数规划 设\(a_i\)为点权,\(b_i\)为边权,我们要最大化\(\sum \frac{a_i}{b_i}\).可以二分一个答案\(k\),我们需要检查\(\ ...
- POJ 3621 Sightseeing Cows 01分数规划,最优比例环的问题
http://www.cnblogs.com/wally/p/3228171.html 题解请戳上面 然后对于01规划的总结 1:对于一个表,求最优比例 这种就是每个点位有benefit和cost,这 ...
- POJ 3621 Sightseeing Cows | 01分数规划
题目: http://poj.org/problem?id=3621 题解: 二分答案,检查有没有负环 #include<cstdio> #include<algorithm> ...
- 【POJ3621】【洛谷2868】Sightseeing Cows(分数规划)
[POJ3621][洛谷2868]Sightseeing Cows(分数规划) 题面 Vjudge 洛谷 大意: 在有向图图中选出一个环,使得这个环的点权\(/\)边权最大 题解 分数规划 二分答案之 ...
- POJ3621Sightseeing Cows[01分数规划 spfa(dfs)负环 ]
Sightseeing Cows Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 9703 Accepted: 3299 ...
- POJ 3621 Sightseeing Cows 【01分数规划+spfa判正环】
题目链接:http://poj.org/problem?id=3621 Sightseeing Cows Time Limit: 1000MS Memory Limit: 65536K Total ...
- POJ 3621 Sightseeing Cows (bellman-Ford + 01分数规划)
题意:给出 n 个点 m 条有向边,要求选出一个环,使得这上面 点权和/边权和 最大. 析:同样转成是01分数规划的形式,F / L 要这个值最大,也就是 G(r) = F - L * r 这个值为0 ...
- 2018.09.12 poj3621Sightseeing Cows(01分数规划+spfa判环)
传送门 01分数规划板题啊. 发现就是一个最优比率环. 这个直接二分+spfa判负环就行了. 代码: #include<iostream> #include<cstdio> # ...
- [转]01分数规划算法 ACM 二分 Dinkelbach 最优比率生成树 最优比率环
01分数规划 前置技能 二分思想最短路算法一些数学脑细胞? 问题模型1 基本01分数规划问题 给定nn个二元组(valuei,costi)(valuei,costi),valueivaluei是选择此 ...
随机推荐
- HTML5小游戏《智力大拼图》发布,挑战你的思维风暴
一,前言 本 游戏 是鄙人研究lufylegend数日之后,闲暇之余写下的.本游戏运用全新的技术 html 5写成的.游戏引擎为国产的lufylegend.js,大家可以去它的官网看看.游戏处于测 ...
- J2EE基础篇——十三个规范
背景: 1.企业级应用框架的需求,在很多企业级应用中.比如数据库连接.邮件服务.事务处理等都是一些通用企业需求模块,这些模块假设每次在开发中都由开发者来完毕的话,将会造成开发周期长和代码可靠性差等问题 ...
- [置顶] CopyU!v2插件合集 [2013年7月18日更新]
这里提供了所有可供CopyU!v2使用的功能插件,您可以根据自己的需要下载安装使用,需要提醒您的是,安装过多的插件会影响CopyU!的运行性能,请合理的安装使用! 1.打包插件 版本:1.0.12.1 ...
- NSThread的一些细节
1.NSThread创建方式(一个NSThread对象就代表一条线程)1.1>创建\启动线程(1)线程一启动,就会在thread中执行self的run方法NSTread *thread = [[ ...
- 基于visual Studio2013解决C语言竞赛题之1034数组赋值
题目 解决代码及点评 /********************************************************************** ...
- javascript 浏览器兼容性写法
var event = window.event || arguments.callee.caller.arguments[0]; // 获取event对象 event = event.srcElem ...
- iOS开发- 查询项目代码行数
...事实上, 这功能也没什么用. 就是查询一个项目总的代码行数. 玩玩倒是能够. 方法: 在终端以下依次输入: cd 项目文件 find . "(" -name "*. ...
- DButils工具类能够用来获取数据库连接向数据库插入更新删除对象2
package com.ctl.util; import java.awt.Color; import java.awt.Font; import java.awt.Insets; import ja ...
- Swift - 使用下划线(_)来分隔数值中的数字
为了增强较大数值的可读性,Swift语言增加了下划线(_)来分隔数值中的数字. 不管是整数,还是浮点数,都可以使用下划线来分隔数字. 1 2 3 4 //数值可读性 let value1 = 10_0 ...
- 【app】遍历目录所有文件
遍历目录所有文件 原创,转载时请注明,谢谢.邮箱:tangzhongp@163.com 博客园地址:http://www.cnblogs.com/embedded-tzp Csdn博客地址:htt ...