博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
poj 3621 二分+spfa
阅读量:6950 次
发布时间:2019-06-27

本文共 1890 字,大约阅读时间需要 6 分钟。

题意:给出一个有向图,问求一个回路,使得回路上的点权之和/边权之和最大。

这题主要是分析出如何确定ans值。我们将(a1*x1+a2*x2+..+an*xn)/(b1*x1+b2*x2+..+bn*xn)=L,转换为:x1*(a1-b1*L)+x2*(a2-b2*L)+...xn*(an-bn*L)=0

则每次枚举L的值,spfa中边权值为len[]*L-a[],若存在负环回路(即一个点访问次数超过n次)则表示L的值小了,增大L值;反之减小L值.

 

 

代码:

#include
#include
#include
#define MAXN 1052#define inf 10000000using namespace std;struct Edge{ int u,len,next;}edge[5*MAXN];int temp,n,m;int head[MAXN],a[MAXN];void addEdge(int u,int v,int c){ edge[temp].u=v; edge[temp].len=c; edge[temp].next=head[u]; head[u]=temp; temp++;}double dis[MAXN]; bool vis[MAXN]; int num[MAXN]; int que[MAXN*MAXN];bool spfa(double mid){ double val; for(int i=0;i<=n;i++) { dis[i]=inf; vis[i]=false; num[i]=0; } dis[1]=0; int headt,tail; headt=0;tail=0; que[tail++]=1; vis[1]=true; num[1]++; while(headt!=tail) { int v=que[headt]; headt++; vis[v]=false; for(int i=head[v];i!=-1;i=edge[i].next) { int u=edge[i].u; val=mid*edge[i].len-a[u]; if(dis[v]+val
=n) { return false; } } } } } return true;}int main(){ while(scanf("%d%d",&n,&m)!=EOF) { temp=0; for(int i=1;i<=n;i++) { scanf("%d",&a[i]); } memset(head,-1,sizeof(head)); for(int i=1;i<=m;i++) { int v,w,c; scanf("%d%d%d",&v,&w,&c); addEdge(v,w,c); } double mid=0;double ans=0; double l=0;double r=2000; while(r-l>=0.001) { mid=(l+r)/2.0; if(spfa(mid)) { r=mid; //减小ans; } else { ans=mid; l=mid; } } printf("%.2lf\n",ans); } return 0;}

 

转载于:https://www.cnblogs.com/amourjun/p/5134131.html

你可能感兴趣的文章
170道Java工程师面试题,你敢挑战吗?
查看>>
企业可以自己搭建堡垒机吗?如何搭建堡垒机?
查看>>
字符串反转
查看>>
大型分布式系统中的缓存架构
查看>>
【对讲机的那点事】物联卡与手机SIM卡的区别!
查看>>
【对讲机的那点事】公网对讲机初次办理物联网卡应注意哪些问题?
查看>>
移动APP持续交付系列之云构建价值分析
查看>>
最后的 Windows XP,也将在 4 月 9 日退役
查看>>
一条命令永久更改linux主机名(centos7)
查看>>
list set array map 排序问题
查看>>
阿里云发布首届POLARDB数据库性能大赛 推动云原生数据库发展
查看>>
web8
查看>>
14.源码阅读(启动一个没有在AndroidManifest中注册的Activity)
查看>>
只需6步,从头开始编写机器学习算法
查看>>
操作系统复习题-第四章 存储器管理
查看>>
这样的多维分析功能才完整
查看>>
VirtualBox安装RHEL6.5/CentOS7.0
查看>>
RequireJS进阶
查看>>
Strategy for Python Challenge(03)
查看>>
JS函数式编程读书笔记 - 2
查看>>