UVa10746 Crime Wave - The Sequel

UVA 10746 Crime Wave - The Sequel 这个题目真是无力吐槽,WA了几次之后去uva论坛一看原来是精度问题,对比了别人的测试数据发现因为某一个输出 总是比别人的小0.01,最短路判断改成这样:if(p->c && dis[j = p->i] > dis[i] + p->d + esp)还是无果, 然后将dis[s]初始化为esp,这样就才过掉。以后做这样的类型的题目初始值都为esp好了。 思路: n个银行,m个警察,m个警察到每个银 阅读详情

        题意:n个银行,m个警察(n<=m)。每个银行需要一个警察去守。给出所有警察到所有银行的花费,问怎么安排警察最省。

        思路:最小费用最大流。建图:源点->银行->警察->汇点。注意反向边费用要赋上正向边的相反数,另外可能出现精度问题。这道题本来是简单题,但是我把return 0写成了return true,RE一万年找不出原因。。。

#include <iostream>
#include <stdio.h>
#include <cmath>
#include <algorithm>
#include <iomanip>
#include <cstdlib>
#include <string>
#include <memory.h>
#include <vector>
#include <queue>
#include <stack>
#include <ctype.h>
#define INF 1000000000
using namespace std;

int n,m;
int map[50][50];
int f[50][50];
double cost[50][50];
int pre[50];

int main(){
	while(cin>>n>>m){
		if(n==0&&m==0)break;
		memset(map,0,sizeof(map));
		memset(f,0,sizeof(f));
		for(int i=0;i<=n+m+1;i++)
			for(int j=0;j<=n+m+1;j++)
				cost[i][j]=0;
		
		//for(int i=1;i<=n;i++)map[0][i]=1;
		for(int i=1;i<=m;i++)map[n+i][n+m+1]=1;
		for(int i=1;i<=n;i++){
			for(int j=1;j<=m;j++){
				cin>>cost[i][n+j];
				cost[n+j][i]=-cost[i][n+j];
				map[i][n+j]=1;
			}
		}
		
		double cc[50];
		bool vis[50];
		double ans=0;
		for(int k=1;k<=n;k++){
			memset(vis,0,sizeof(vis));
			for(int i=1;i<=m+n+1;i++)cc[i]=INF;
			cc[k]=0;
			queue<int> que;que.push(k);
			while(!que.empty()){
				int cur=que.front();que.pop();vis[cur]=false;
				for(int i=1;i<=n+m+1;i++){
					if( (cc[cur]+cost[cur][i])<cc[i]-0.0001 &&(map[cur][i]-f[cur][i])>0 ){	
						pre[i]=cur;
						cc[i]=(cc[cur]+cost[cur][i]);
						if(!vis[i]){
							vis[i]=true;
							que.push(i);
						}
					}
				}
			}
			
			ans+=cc[n+m+1];
			for(int i=n+m+1;i!=k;i=pre[i]){
				f[pre[i]][i]++;
				f[i][pre[i]]--;
			}
		}
		printf("%.2lf\n",ans/n-0.00000001);
	}
	return 0;
}


[附源码]计算机毕业设计-Steam游戏平台系统论文Springboot程序 项目运行环境配置:(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。项目技术:等等组成,B/S模式 + Maven管理等等。环境需要1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA;3.tomcat环境:Tomcat 7.x,8.x,9.x版本均可4. 阅读详情

相关推荐

基于Simulink的前馈解耦SVPWM整流器仿真

本文提出了一种基于Simulink的前馈解耦SVPWM整流器仿真方案,针对传统双闭环控制存在的耦合严重、电压利用率低等问题进行优化。通过前馈补偿dq轴耦合项(ωLiq和ωLid)结合SVPWM调制算法,实现了电流跟踪误差<3%、电压利用率达0.99、THD<3%的性能指标。文章详细阐述了系统架构设计,包括前馈解耦原理推导、SVPWM算法实现步骤,并提供了完整的Simulink建模方法。仿真结果表明,该方案在动态响应速度(25ms)和直流电压纹波(1.1%)方面显著优于传统SPWM控制。同时给出了

MHD0815的博客 162

uva 10746 - Crime Wave - The Sequel(费用流)

题目链接:uva 10746 - Crime Wave - The Sequel 题目大意:自从银行被抢之后,警局为每个银行都安排了一个警察,现在有n个银行和m警察,给出每个警察到达各个银行的时间,问说怎么样安排人手,可以使的警察到达银行的平均时间最小。 解题思路:网络流的最小费用最大流,起点s与m个警察相连,容量为1,费用为0;n个银行与汇点t相连,容量为1,费用为0;然后就

不慌不忙、不急不躁 2143

IP白名单校验

支持格式: 1、127.0.0.1 // 指定固定IP 2、127.0.0.1-127.0.0.128 // 可使用“-”来表示一个IP区间,支持跨IP段(一般不会出现这种情况,跨IP段则配置多个规则) 3、127.0.* // 2~4位IP段可...

2199

UVA 10746 Crime Wave – The Sequel(费用流)

题意: 有m个警察,派n个警察到n个银行,给出每个警察到各银行的时间,求最小的平均时间。 分析: 平均乘上n就是总时间,也就是要最小化总时间,那么用费用流就可以解决问题。各银行向每个警察连边,容量1,费用为时间;增加源点,源点向各银行连边,容量1,费用0;增加汇点,警察向汇点连边,容量1,费用0。在图中跑费用流就行。 这题最恶心的地方在于保留小数,结果加上eps再输出。这里涉及到保留小数方法,是用传统的四舍五入还是用银行家舍入?都不知道以后涉及到小数的输出要怎么搞了,这种东西就该spj啊。

fcbruce 1256

【ceph】OSD-基本存储单元

OSD 是 Ceph 的基本存储单元,负责对象的存储、检索和数据副本的管理。每个 OSD 进程通常对应于存储集群中的一个物理或虚拟存储设备(如硬盘或 SSD)。OSD 是 Ceph 的关键组成部分,负责对象的存储、管理和复制。通过多个 OSD 共同协作,Ceph 能够提供高可用性、可扩展性和容错能力,适用于各种存储需求。

qq_42853133的博客 1998

如何下载最新版本的VMware Workstation

随着虚拟化技术的发展,VMware Workstation作为行业领先的桌面虚拟化软件,为用户提供了在单一物理计算机上运行多个操作系统的能力。本文将详细介绍如何从Broadcom支持网站下载最新的VMware Workstation Pro版本。

安呀智数据坊的博客 668

UVA 10746 Crime Wave - The Sequel

最小费用最大流 源点->警察->bank->汇点 剩下的模板就可以 #include <map> #include <set> #include <list> #include <cmath> #include <ctime> #include <deque> #include ...

deko2014的博客 182

MNI152 坐标空间和 fsaverage 坐标空间相互转换, 如已知fsaverage空间的坐标如何求MNI152 坐标?aparc.a2009s.annot转化到MNI152空间?

大多数神经影像学研究的结果是在体积(例如,MNI152)或表面(例如,fsaverage)坐标系中报告的。体积坐标系和表面坐标系之间的准确映射可以促进许多应用,例如将 fMRI 组分析从 MNI152 投影到 fsaverage 以进行可视化或从 fsaverage 投影静息状态 fMRI 分区对 MNI152进行新数据的体积分析。Wu et al., 2018 评估了三种在 MNI152通过模拟上述应用的 Colin27 和 fsaverage 坐标系:将组平均数据从 MNI152/Colin27 投影到

从事脑科学核磁共振方法学研究,在Nature communications等权威期刊发表研究论文,熟练掌握磁共振处理方法和统计学方法,欢迎大家和我交流。 2966

uva 10746 - Crime Wave - The Sequel

<br />//坑爹的地方在于精度问题<br />//输出时要给结果加一个偏移量,否则,如 0.015 这样的数,会被输出成 0.01 是前人跟俺们的话!<br /> <br />#include <iostream> #include <cstdio> #include <queue> #include <memory.h> using namespace std; const int MAX=25*2; const int INF=1<<30; bool inq[MAX]; int

流水不争先 1039

超声波传感器(CH101&ch201) - Ⅰ

压电微机械超声换能器(PMUT)和超声波信号处理的可编程片上系统(SoC)集成在一起的传感器

nicole088的专栏 2796

在RStudio中使用GitHub Copilot:代码自动生成,从此告别手敲!

可以通过自定义提示词来引导Copilot生成符合自己需求的代码。再看一个做统计分析的。

Codewar的博客 331

uva 10746 Crime Wave - The Sequel

uva 10746 Crime Wave - The Sequel 最小费用最大流

@fei 1082

全球气候模式降尺度方法总结及其代码实现

简介总结各类型气候模式降尺度方法

WW、forever的博客 1万+

uva 10746 Crime Wave - The Sequel(最小费用流)

题目:

young TO challenge! 682

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

uva 10746 Crime Wave - The Sequel (最小费最大流)

uva 10746 Crime Wave - The Sequel题目大意:还记得上次那些抢银行的强盗吗?这次为了银行的安全,要派一些警察去守护这些银行。现在有n个银行和m警察,给出每个警察到达各个银行的时间,问说怎么样安排人手,可以使的警察到达银行的平均时间最小。解题思路:建图是关键。设置一个超级源点连向所有的警察,容量为1,费用为0;设置一个超级汇点,使所有的银行连向超级汇点,容量为1, 费用为

总有那么一群人喜欢盯着我的博客看,估计这是他们见过最长的博客名,我必须得告诉他们博客名最长可以写多长 595

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

uva 10746 Crime Wave – The Sequel

最小费用最大流 题意:有n个地点,m部船(m&gt;=n),给出每部船到每个地点的时间。然后要派船到地点。每个船只能用一次即只能去只能去一个地方,每个地方只需要一部船。算出最小平均时间。要算平均时间其实就是算总时间最小,然后除以n即可。那怎么求总时间最小呢? 其实一看,就是匹配类型的问题,但是就我目前学的匹配的算法,没有可以解这道题的,然后是出于白书的图论专题,就考虑是不是可以转化为其他类型的...

weixin_33711641的博客 102

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

UVA 10746 - Crime Wave - The Sequel

/* 题意 : n个银行 m个警察 要求每个银行都有警察过去 可以想象成二分图来解决 二分图的最优匹配 求出最小权值  KM算法即可 */ #include #include #include int n,m; double w[30][30]; double lx[30],ly[30],slack; int left[30],r[30]; bool s[30],t[30];

chenchaoflight的专栏 586

uva 10746 Crime Wave - The Sequel (最小费用流)

uva 10746 Crime Wave - The Sequel (最小费用流) 题目大意: m个警察赶到 n 个银行,已知各个时间,以及m>=n,求平均时间最短 解题思路: 平均时间最短,也就是总时间最短,很明显想到费用流,带权匹配KM算法也可以解。很裸的一题最小费用流 但是WA了一次,原因是居然卡精度,最后答案加了eps就AC了,感觉是UVA的数据有问题。 代码:见文章

炒饭君的博客 4万+

UVA - 10746 Crime Wave - The Sequel 最小费用最大流

题目大意:有N个bank,M个police,要求每个bank都要有一个police,每个police到每个bank都有一定的费用,求每个bank都有police的情况下的费用的最小值 解题思路:模板题,超级源点为0,bank序号为M+1到M+N,police序号为1-M,再设置一个超级汇点N+M+1,就可以做了 #include #include #include #include #defi

静静地码 865

Crime Wave – The Sequel - UVa 10746 费用流

Crime Wave – The Sequel Input: Standard Input Output: Standard Output Time Limit: 2 Seconds   n banks have been robbed this fine day. m (greater than or equal to n) police cruisers are on duty

提比的强行AC 694

UVA 10746 - Crime Wave - The Sequel(费用流)

Crime Wave – The Sequel Input: Standard Input Output: Standard Output Time Limit: 2 Seconds   n banks have been robbed this fine day. m (greater than or equal to n) police cruisers are on duty

Remilia's 1384

UVA 10746 Crime Wave - The Sequel【最小费用最大流】

题目链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1687题意:给你n个城市到m个海港的距离,求每个城市都有船只去的最短平均航行距离。源点向城市建边 城市向海港 海港向汇点建边 容量为1,最后城市向海港的费用为距离代码:#include<stdi

mfcheer 726
上一篇: UVa563 Crimewave
下一篇: Codeforces Round #FF (Div. 2) Problem A DZY Loves Hash
squee_spoon
博客等级 码龄14年 61粉丝 455原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值