题外话:最近差不多要退役,复赛打完就退役回去认真读文化课。

题面:P2868 [USACO07DEC]观光奶牛Sightseeing Cows

题解:最优比例环

题目实际是要求一个ans,使得对于图中任意一个环满足 sig(i=1,n)v[i]/sig(i=1,n)e[i]<=ans

所以将公式变换为:sig(i=1,n)v[i]-[(sig(i=1,n)v[i])*ans]<=0

sig(i=1,n)(v[i]-ans*e[i])<=0

最终化为:sig(i=1,n)(ans*e[i]-v[i])>=0,即以ans*e[i]-v[i]为新的边权重建图,对于图中任意一个环都能满足该条件的即为ans

所以二分答案,对于每个mid重建图,用递归型SPFA判断负环,若sig(i=1,n)(mid*e[i]-v[i])<0 则说明mid<ans,否则说明mid>=ans

代码:

 #include<cstdio>
#include<cstring>
using namespace std;
const int maxn=,maxm=,inf=(<<)-;
const double jd=1e-;
int N,M,num_edge=,edge_head[maxn],u,v;
double V[maxn],e,l,r,mid,Dis[maxn];
bool vis[maxn],flag;
struct Edge{ int to,nx;double e,dis; }edge[maxm];
inline void Add_edge(int from,int to,double e){
edge[++num_edge].nx=edge_head[from];
edge[num_edge].to=to;
edge[num_edge].e=e;
edge_head[from]=num_edge;
return;
}
inline void Rebuild(){
for(int i=;i<=N;i++)
for(int j=edge_head[i];j;j=edge[j].nx)
edge[j].dis=edge[j].e*mid-V[edge[j].to];
return;
}
inline void SPFA(int x){
if(flag) return;
vis[x]=;
for(int i=edge_head[x];i;i=edge[i].nx){
int y=edge[i].to;
if(Dis[y]>Dis[x]+edge[i].dis){
if(vis[y]){
flag=;
return;
}
Dis[y]=Dis[x]+edge[i].dis;
SPFA(y);
}
}
vis[x]=;
}
inline bool Check(){
for(int i=;i<=N;i++) vis[i]=,Dis[i]=;
flag=;
for(int i=;i<=N;i++){
SPFA(i);
if(flag) break;
}
return flag;
}
int main(){
scanf("%d%d",&N,&M);
for(int i=;i<=N;i++) scanf("%lf",&V[i]);
for(int i=;i<=M;i++){
scanf("%d%d%lf",&u,&v,&e);
Add_edge(u,v,e);
}
l=; r=;
while(l+jd<r){
mid=(l+r)/;
Rebuild();
if(Check()) l=mid;
else r=mid;
}
printf("%.2lf\n",l);
return ;
}

By:AlenaNuna

递归型SPFA判负环 + 最优比例环 || [Usaco2007 Dec]奶牛的旅行 || BZOJ 1690 || Luogu P2868的更多相关文章

  1. bzoj1690:[Usaco2007 Dec]奶牛的旅行(分数规划+spfa判负环)

    PS:此题数组名皆引用:戳我 题目大意:有n个点m条有向边的图,边上有花费,点上有收益,点可以多次经过,但是收益不叠加,边也可以多次经过,但是费用叠加.求一个环使得收益和/花费和最大,输出这个比值. ...

  2. 【BZOJ】1690: [Usaco2007 Dec]奶牛的旅行(分数规划+spfa)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1690 第一题不是水题的题.. 分数规划.. T-T 百度吧..http://blog.csdn.ne ...

  3. bzoj1690:[Usaco2007 Dec]奶牛的旅行 (分数规划 && 二分 && spfa)

    用dfs优化的spfa判环很快啦 分数规划的题目啦 二分寻找最优值,用spfa判断能不能使 Σ(mid * t - p) > 0 最优的情况只能有一个环 因为如果有两个环,两个环都可以作为奶牛的 ...

  4. bzoj 1690: [Usaco2007 Dec]奶牛的旅行——分数规划+spfa判负环

    Description 作为对奶牛们辛勤工作的回报,Farmer John决定带她们去附近的大城市玩一天.旅行的前夜,奶牛们在兴奋地讨论如何最好地享受这难得的闲暇. 很幸运地,奶牛们找到了一张详细的城 ...

  5. [bzoj1690] [Usaco2007 Dec] 奶牛的旅行 (最大比率环)

    题目 作为对奶牛们辛勤工作的回报,Farmer John决定带她们去附近的大城市玩一天.旅行的前夜,奶牛们在兴奋地讨论如何最好地享受这难得的闲暇. 很幸运地,奶牛们找到了一张详细的城市地图,上面标注了 ...

  6. 【bzoj1690】[Usaco2007 Dec]奶牛的旅行 分数规划+Spfa

    题目描述 作为对奶牛们辛勤工作的回报,Farmer John决定带她们去附近的大城市玩一天.旅行的前夜,奶牛们在兴奋地讨论如何最好地享受这难得的闲暇. 很幸运地,奶牛们找到了一张详细的城市地图,上面标 ...

  7. bzoj 1690: [Usaco2007 Dec]奶牛的旅行【01分数规划+spfa】

    把add传参里的double写成int我也是石乐志-- 首先这个东西长得就很01分数规划 然后我不会证为什么没有8字环,我们假装他没有 那么设len为环长 \[ ans \leq \frac{\sum ...

  8. POJ 3259 Wormholes(SPFA判负环)

    题目链接:http://poj.org/problem?id=3259 题目大意是给你n个点,m条双向边,w条负权单向边.问你是否有负环(虫洞). 这个就是spfa判负环的模版题,中间的cnt数组就是 ...

  9. Poj 3259 Wormholes(spfa判负环)

    Wormholes Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 42366 Accepted: 15560 传送门 Descr ...

随机推荐

  1. redis 之django-redis

    redis之django-redis   自定义连接池 这种方式跟普通py文件操作redis一样,代码如下: views.py import redis from django.shortcuts i ...

  2. Python:Base3(函数,切片,迭代,列表生成式)

    1.Python之调用函数: Python内置了很多有用的函数,我们可以直接调用. 要调用一个函数,需要知道函数的名称和参数,比如求绝对值的函数 abs,它接收一个参数. 可以直接从Python的官方 ...

  3. PI膜概述

    一.概述 1.简述 聚酞亚胺薄膜又称PI薄膜(polyimide filin)是一种含有酞亚胺或丁二酞亚胺的绝缘类高分子材料.是目前工程塑料中耐热性最好的品种之一. 2.发展简史 1908年,PI聚合 ...

  4. 【机器学习理论】概率论与数理统计--假设检验,卡方检验,t检验,F检验,方差分析

    显著性水平α与P值: 1.显著性水平是估计总体参数落在某一区间内,可能犯错误的概率,用α表示. 显著性是对差异的程度而言的,是在进行假设检验前确定的一个可允许作为判断界限的小概率标准. 2.P值是用来 ...

  5. ORACLE 更新 和 插入多条 数据

    --插入语句INSERT INTO OA_W_BAOXIAOMXYWB (ID,DONGTAITABLEPARENTSN,CHANPINNAMEGKFK,CHANPINJITIGKFK,CHANPIN ...

  6. C#追加日志文件

    追加日志文件 using System; using System.IO; class DirAppend { public static void Main() { using (StreamWri ...

  7. java 给不同成绩分等级

    题目:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示. 程序分析:(a>b)?a:b这是条件运算符的基本例子. pack ...

  8. Maven设置阿里仓库镜像增加访问速度

    修改maven的setting.xml 在mirrors节点下面添加子节点 <mirror> <id>nexus-aliyun</id> <mirrorOf& ...

  9. springmvc默认配置文件

    当在新建的maven web项目的web.xml中直接加入下面的<servlet>和<servlet-mapping>后,直接运行就会出现这个报错,意思就是找不到默认的spri ...

  10. 面试35-删除字符串重复字符-删除出现在第二个字符串中的字符-第一个只出现一次的字符-hash表计数

    #include<iostream>#include<algorithm>#include<functional>using namespace std;char ...