POJ 3621 Sightseeing Cows

  http://poj.org/problem?id=3621

  这两天一直在复习代码,因为好久都不写东西了,而且转了语言,除了Dinic我什么都不会写……

  题目大意:给你一个有向图,边有权(T),点有权(F),使求一个环,使得最大化∑(F)/∑(T)。

  这是一个最优比率环问题,与上一个最有比率生成树问题相似,都是01分数规划的考点。

  设 ans≥∑(F)/∑(T) , 有

    ∑(F)-∑(T)*ans≤0

    ∑(F-T*ans)≤0

  我们可以二分ans,将图的边权变为 F-T*ans,用SPFA判断图中是否有负权回路。如果图中有负权回路,则当前回路中 ∑(F)-∑(T)*ans<0,继而推得∑(F)/∑(T)≤ans,为符合条件的解,ans需要向上二分;反之,ans需要向下二分。

  

难看的代码:

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <queue>
#include <cmath>
#define DINF 10000000.0
#define mm 10000
#define mn 1001
#define eps 1e-3
using namespace std;queue<int> q;
int x,y,n,m,cnt[mn];
double dist[mn],F[mn],z;
bool vis[mn];
struct EDGE{int pnt;double dist;EDGE *pre;EDGE (){}EDGE(int _pnt,double _dist,EDGE *_pre):pnt(_pnt),dist(_dist),pre(_pre){}
}Edge[mm],*SP=Edge,*edge[mm];inline void addedge(int a,int b,double c){edge[a]=new(++SP)EDGE(b,c,edge[a]);
}bool SPFA(double ans){memset(cnt,0,sizeof(cnt));for(int i=2;i<=n;i++) dist[i]=DINF;memset(vis,false,sizeof(vis));while(!q.empty()) q.pop();q.push(1);dist[1]=0;while(!q.empty()){int i=q.front();q.pop();vis[i]=false;for(EDGE *j=edge[i];j;j=j->pre)if(dist[j->pnt]>dist[i]+ans*j->dist-F[j->pnt]){dist[j->pnt]=dist[i]+ans*j->dist-F[j->pnt];if(!vis[j->pnt]){vis[j->pnt]=true;if(++cnt[j->pnt]==n) return true;q.push(j->pnt);}}}return false;
}int main(){scanf("%d%d",&n,&m);for(int i=1;i<=n;i++) scanf("%lf",&F[i]);for(int i=1;i<=m;i++){scanf("%d%d%lf",&x,&y,&z);addedge(x,y,z);}double low=0,high=DINF;while(high-low>eps){double mid=(low+high)/2.0;if(SPFA(mid)) low=mid;else high=mid;}printf("%.2lf\n",low);return 0;
}

  

转载于:https://www.cnblogs.com/Delostik/archive/2011/07/28/2119329.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/410478.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LetCode-算法-整数反转

首先此题是要整数反转123就要翻转成321 &#xff0c;23就是32 我们首先发现其中的规律 321 3X1022X1013X100 123反转成321 就是(123%10)X102(12%10)X102(1%10)X102 得出规律后我们就可以通过此规律写出方法了 如下: public class Solution {public int Reverse(int x) {int …

[html] 如何通过表单下载文件?

[html] 如何通过表单下载文件&#xff1f; form 表单的action设置为接口地址&#xff0c;设置method为post/getpost方法&#xff1a;根据需要传递的参数设置多个input:namekey, valuevalue如果请求的接口不需要参数&#xff0c;建议设置一个input,否则可能会引起报错。submit提…

怎样下载安装python_Windows系统上如何安装Python和pip

系统环境&#xff1a; Windows 7 Pyhton 2.7.12 pip-8.1.2 1、下载安装包 python2.7.12安装包下载地址&#xff1a;pip安装包下载地址&#xff1a;2、安装Python a、双击下载后的安装包&#xff0c;一直点下一步即可。 b、配置Python的环境变量&#xff0c;操作如下&#xff1a…

ast.literal_eval(转)

eval函数在Python中做数据类型的转换还是很有用的。它的作用就是把数据还原成它本身或者是能够转化成的数据类型。那么eval和ast.literal_val()的区别是什么呢&#xff1f;本文将大家介绍关于Python中函数eval和ast.literal_eval区别的相关资料&#xff0c;需要的朋友可以参考下…

高德地图-2D地图下区域遮掩(只显示固定区域里的内容)

最近遇到一个新的需求需用用到高德地图 公司需要只显示固定区域范围的地图,其余地方的地图都用透明遮罩覆盖 完成后如下图所示: 地图体验网址 刚开始的时候研究了半天高德地图的的JS API中只有一个区域遮掩符合条件 但是区域遮掩这个代码有一个很重要的前提是必须使用3D地图&…

数据结构之数组模拟栈

栈的特点即先进后出,采用数组模拟栈,实现栈的这一特性主要是靠定义一个指针(索引). 指针的初始位置指向的是-1 以下给出代码: package com.ebiz.stack;/*** author YHj* create 2019-07-20 14:20* 数组模拟栈*/public class ArrayStack {private int maxSize;private int [] …

C# 淘宝商品微信返利助手开发-(八)微信号对接

系列教程一目录&#xff1a;返利助手原理 系列教程二目录&#xff1a;返利助手开放文档以及帐号申请地址 系列教程三目录&#xff1a;返利助手开发&#xff08;1&#xff09;API介绍 系列教程四目录&#xff1a;返利助手开发&#xff08;2&#xff09;淘宝分享的内容如何只取…

C# 制作不规则窗体的两种解决方案

我的广告单元&#xff0c;有空点一下哦&#xff0c;谢谢&#xff01; 冒着被拍砖的危险&#xff0c;投放到首页。C#制作不规则窗体应该又是一个老生常谈的问题了&#xff0c;可能很多老鸟会带BS的眼神&#xff0c;那么请老鸟们视该文章如浮云吧。 制作不规则窗体&#xff0c;本…

新概念英语第二册课文电子版_新概念英语第二册课文学生(Victoria)朗读

点击上"蓝字"关注我们专栏介绍【悦读时刻】是我们为中小学生在英语、语文朗读中的佼佼者开辟的专栏。我们会在优秀朗诵内容中进行优选之后上传发布。外研社新概念英语 II编者&#xff1a;何其莘 &L.G. AlexanderLONGMAN2简 介《新概念英语》(New Concept Engl…

HubbleDotNet使用备忘

Word格式下载转载于:https://www.cnblogs.com/wdfrog/archive/2011/07/30/2121817.html

C# 淘宝商品微信返利助手开发-(九)编写一个vue页面用于复制淘口令

系列教程一目录&#xff1a;返利助手原理 系列教程二目录&#xff1a;返利助手开放文档以及帐号申请地址 系列教程三目录&#xff1a;返利助手开发&#xff08;1&#xff09;API介绍 系列教程四目录&#xff1a;返利助手开发&#xff08;2&#xff09;淘宝分享的内容如何只取…

数据结构之中缀表达式实现计算器

栈还是用的上一篇的数组模拟栈,并在此之上增加了 判断是否是一个运算符的方法 获取运算符的优先级方法 计算结果方法 查看栈顶元素的方法 四个方法,具体代码如下: package com.ebiz.stack;/*** author YHj* create 2019-07-20 14:20* 数组模拟栈*/public class ArrayStack {pri…

python color属性_使用Python制作一个带GUI界面的词云自动生成工具(连载七)

前几篇向大家介绍了词云自动生成工具&#xff08;GUI&#xff09;的详解GUI词云自动生成工具中词云属性设置界面的实现&#xff08;连载六&#xff09;。通过前面内容我们基本构建出了词云自动生成工具的主要框架。本篇结合tkinter中的filedialog和colorchooser的使用&#xff…

com 名字对象(3)使用IMoniker

一.名字对象比较 Hash和IsEqual方法 IMoniker* moniker2NULL; CreateFileMoniker(OLESTR("F:\\test.xlsx"),&moniker2); DWORD dw; moniker2->Hash(&dw); IMoniker* moniker3NULL; CreateFileMoniker(OLESTR("F:\\test2.xlsx"),&moniker3);…

python爬取微博评论_用 python 爬取微博评论并手动分词制作词云

最近上海好像有举行个什么维吾尔族的秘密时装秀&#xff0c;很好看的样子&#xff0c;不过我还没时间看。但是微博上已经吵翻了天&#xff0c;原因是好吧&#xff0c;这不是我们关心的&#xff0c;我的心里只有学习我爱学习 Python 爬虫 本次爬取的是这条微博这条微博 微博的移…

公众号出现该公众号提供的服务出现故障分析

近日公众号出现了 出现该公众号提供的服务出现故障的错误提示 百度了一下这种错误的可能性 在这里插入图片描述 1. 程序后台未回复微信success 2. 5秒内无响应 3. 授权给了多个第三方平台&#xff0c;其中一个不可用。 4. ToUserName和 FromUserName 参数不正确无法找到接收…

数据结构之栈对逆BoLand表达式的计算

一. 后缀表达式: 后缀表达式,逆波兰表达式,是指运算符位于操作符之后,计算机对该式是从做到右进行计算,计算过程如下例子 二.计算思路 对于后缀表达式的计算,需要一个栈即可, 即遇见数字压栈,遇见运算符从栈中取出两个数,根据运算进行操作, 需要注意的是,减法以及除法都是后出栈…

[html] html中在span标签里面可以放那些标签?

[html] html中在span标签里面可以放那些标签&#xff1f; 都可以&#xff0c;但原则上不要。个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前端面试题

得到WebService应用程序的路径

[WebMethod] public string ShowWebServicePhysicalPath() { string strpathSystem.Web.HttpContext.Current.Request.PhysicalPath; return strpath.Substring(0,strpath.LastIndexOf("\")); }转载于:https://www.cnblogs.com/lanbaoming/archive/2…

c++ fork 进程时 共享内存_c/c++ Linux 进程间通信------共享内存

1. 什么是共享内存共享内存(Shared Memory)&#xff0c;指两个或多个进程共享一个给定的存储区。进程可以将同一段共享内存连接到它们自己的地址空间中&#xff0c;所有进程都可以访问共享内存中的地址&#xff0c;就好像它们是由用C语言函数malloc分配的内存一样。而如果某个进…