UVA-1045 - The Great Wall Game(二分图最佳匹配)

题意:在一个n*n的棋盘上有n个棋子,要求通过移动棋子使棋子的排布满足以下情况之一:呈横行排列;呈纵行排列;呈对角线排列(有两条)。

棋子移动一个单元格的费用为1,总费用为所有棋子的移动费用之和。求最小费用。

分析:因为这题的数据很小,故可以枚举每种情况.对于每种情况,我们可以用二分匹配的方法算出最小费用(对于每个棋子,连接n条边到n个目标位置,权值设为负,这样最佳二分匹配求的最大值就是答案的最小值了);

// File Name: 1045.cpp
// Author: Zlbing
// Created Time: 2013/4/20 15:58:22

#include<iostream>
#include<string>
#include<algorithm>
#include<cstdlib>
#include<cstdio>
#include<set>
#include<map>
#include<vector>
#include<cstring>
#include<stack>
#include<cmath>
#include<queue>
using namespace std;
#define CL(x,v); memset(x,v,sizeof(x));
#define INF 1000000000
#define LL long long
#define REP(i,r,n) for(int i=r;i<=n;i++)
#define RREP(i,n,r) for(int i=n;i>=r;i--)
const int MAXN=20;
int X[MAXN],Y[MAXN];
int Left[MAXN];
int w[MAXN][MAXN];
int Lx[MAXN],Ly[MAXN];
bool S[MAXN],T[MAXN];
int N;
bool match(int i)
{S[i]=true;for(int j=1;j<=N;j++)if(Lx[i]+Ly[j]==w[i][j]&&!T[j]){T[j]=true;if(Left[j]==0||match(Left[j])){Left[j]=i;return true;}}return false;
}
void update(){int a=INF;for(int i=1;i<=N;i++)if(S[i])for(int j=1;j<=N;j++)if(!T[j])a=min(a,Lx[i]+Ly[j]-w[i][j]);for(int i=1;i<=N;i++){if(S[i])Lx[i]-=a;if(T[i])Ly[i]+=a;}
}
void KM()
{for(int i=1;i<=N;i++){Left[i]=Lx[i]=Ly[i]=0;for(int j=1;j<=N;j++){Lx[i]=max(Lx[i],w[i][j]);}}for(int i=1;i<=N;i++){for(;;){CL(S,0);CL(T,0);if(match(i))break;else update();}}
}int main()
{int cas=0;    while(~scanf("%d",&N)){if(N==0)break;REP(i,1,N){int a,b;scanf("%d%d",&a,&b);X[i]=a;Y[i]=b;}int ans=INF;REP(i,1,N){REP(k,1,N)REP(j,1,N){int dist=abs(X[k]-i)+abs(Y[k]-j);w[k][j]=-dist;}KM();int minn=0;REP(i,1,N){minn+=-w[Left[i]][i];}ans=min(ans,minn);}REP(i,1,N) {REP(k,1,N)REP(j,1,N){int dist=abs(X[k]-j)+abs(Y[k]-i);w[k][j]=-dist;}KM();int minn=0;REP(i,1,N)minn+=-w[Left[i]][i];ans=min(ans,minn);}REP(k,1,N)REP(i,1,N){int dist=abs(X[k]-i)+abs(Y[k]-i);w[k][i]=-dist;}KM();int minn=0;REP(i,1,N)minn+=-w[Left[i]][i];ans=min(ans,minn);REP(k,1,N)REP(i,1,N){int dist=abs(X[k]-i)+abs(Y[k]-N+i-1);w[k][i]=-dist;}KM();minn=0;REP(i,1,N)minn+=-w[Left[i]][i];ans=min(ans,minn);printf("Board %d: %d moves required.\n\n",++cas,ans);}return 0;
}

 

转载于:https://www.cnblogs.com/arbitrary/archive/2013/04/21/3033852.html

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

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

相关文章

聊一聊声明式接口调用与Nacos的结合使用

背景 对于公司内部的 API 接口&#xff0c;在引入注册中心之后&#xff0c;免不了会用上服务发现这个东西。现在比较流行的接口调用方式应该是基于声明式接口的调用&#xff0c;它使得开发变得更加简化和快捷。.NET 在声明式接口调用这一块&#xff0c;有 WebApiClient 和 Refi…

三次握手和四次挥手图解_三次握手和四次挥手简单理解

TCP三次握手TCP标志位TCP在其协议头中使用大量的标志位或者说1位&#xff08;bit&#xff09;布尔域来控制连接状态&#xff0c;一个包中有可以设置多个标志位。TCP是主机对主机层的传输控制协议&#xff0c;提供可靠的连接服务&#xff0c;采用三次握手确认建立一个连接&#…

分布式搜索ElasticSearch单机与服务器环境搭建

先到http://www.elasticsearch.org/download/下载最新版的elasticsearch运行包&#xff0c;本文写时最新的是0.19.1&#xff0c;作者是个很勤快的人&#xff0c;es的更新很频繁&#xff0c;bug修复得很快。下载完解开有三个包:bin是运行的脚本&#xff0c;config是设置文件&…

Android之基于BaseAdapter和SimpleAdapter的GridView

GridView 第一种方式:用SimpleAdapter 先来贴出本文代码运行的结果: 本文需要添加/修改3个文件:main.xml、night_item.xml、JAVA源代码。 main.xml源代码如下,本身是个GirdView,用于装载Item: <?xml version="1.0" encoding="utf-8"?> <…

IOS开发CAKeyframeAnimation的基本使用与keypath的列举

2019独角兽企业重金招聘Python工程师标准>>> CAKeyframeAnimation跟CABasicAnimation的区别是&#xff1a;CABasicAnimation只能从一个数值(fromValue)变到另一个数值(toValue)&#xff0c;而CAKeyframeAnimation会使用一个NSArray保存这些数值 - (void)value {CAKe…

少女为什么会身上香香的?

1 一旦接受这个设定苏打窃瓦辛格&#xff08;via.煎甜担担面&#xff09;▼2 有被冒犯到▼3 哈哈哈哈哈▼4 就差了难忘今宵▼5 还是挺在理的▼6 欣慰中带着点点悲伤▼7 原来是你的错▼8 哈哈哈哈哈▼你点的每个赞&#xff0c;我都认真当成了喜欢

Android之Android Studio三种方式导入外部资源 以及 报错处理

Android Studio三种方式导入外部资源 以及 报错处理 android studio提供了三种方式导入外部资源: 1. Library dependency – 在线添加、需联网下载 、 2. File dependency – 从本地添加一些jar包(要先将jar包</

linux系统服务设置命令--chkconfig命令参数及用法详解

chkconfig(check config) 功能说明&#xff1a;chkconfig命令主要用来更新&#xff08;启动或停止&#xff09;和查询系统服务的运行级信息。谨记chkconfig不是立即自动禁止或激活一个服务&#xff0c;它只是简单的改变了符号连接。 语  法&#xff1a;chkconfig [--add][--…

android飞翔的小鸟游戏素材包_开心消消乐×愤怒的小鸟:为开心而战

手机里总有那么一些游戏&#xff0c;是你一旦不小心打开&#xff0c;就完全停不下来的。在这份“一直玩一直爽游戏清单”里&#xff0c;绝对少不了开心消消乐和愤怒的小鸟的身影。神奇的是&#xff0c;在2020的夏天&#xff0c;它们合体了&#xff01;在接到开心消消乐的brief时…

查看Nginx,Apache,lighttpd,Mysql,Php的编译参数

查看一些常见服务的在编译安装时的参数&#xff1a; 1.Nginx 编译安装时的参数 [roottest ~]# /usr/local/nginx/sbin/nginx -V nginx version: nginx/0.7.65 built by gcc 4.1.2 20080704 (Red Hat 4.1.2-48) TLS SNI support disabled configure arguments: --userwww --grou…

使用原生js写ajax

// 使用原生js 封装ajax // 兼容xhr对象 function createXHR(){if(typeof XMLHttpRequest ! "undefined"){ // 非IE6浏览器return new XMLHttpRequest();}else if(typeof ActiveXObject ! "undefined"){ // IE6浏览器var version ["MSXML2.XMLHttp…

RabbitMQ 处理过慢,原来是一个 SQL 缓存框架导致的 GC 频繁触发

一&#xff1a;背景 1. 讲故事上个月底&#xff0c;有位朋友微信找到我&#xff0c;说他的程序 多线程处理 RabbitMQ 时过慢&#xff0c;帮忙分析下什么原因&#xff0c;截图如下&#xff1a;这问题抛出来&#xff0c;有点懵逼&#xff0c;没说CPU爆高&#xff0c;也没说内存泄…

3部世界顶级宇宙纪录片,献给对宇宙万物充满好奇的你~

全世界只有3.14 % 的人关注了爆炸吧知识宇宙深邃美丽&#xff0c;是黑夜的荧光&#xff0c;是夏天里冒着凉气的西瓜&#xff0c;总是诱人地勾起一代又一代人探索的欲望。对于宇宙思索与探索&#xff0c;人类的脚步从未停止。正是人类对宇宙的好奇&#xff0c;撑起了人类发展的大…

二元函数偏导数公式_偏导数计算公式大全

如果函数f(x)在(a,b)中每一点处都可导,则称f(x)在(a,b)上可导,则可建立f(x)的导函数,简称导数。以下是小学生作文网小编给大家提供的导数公式大全,快来看看吧!导数的定义:当自变量的增量... 2018-12-29 阅读全文 >> 导数公式大全-偏导数基本公式大全_营销/活动策划_计…

在.net 4.0程序中使用TPL Dataflow

今天写了一个小程序&#xff0c;用到了TPL Dataflow&#xff0c;结果在部署的时候发现了一个问题&#xff1a;客户的服务器中有win2003的机器&#xff0c;2003是不支持.net 4.5的&#xff0c;但TPL Dataflow却只能在.net 4.5的程序上使用。 在网上搜了一下&#xff0c;MSDN论坛…

Android之平时遇见的异常和错误总结(不断更新)

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程 安卓错误经验累积 1、当出现下面错误时候 08-21 03:43:16.679: E/AndroidRuntime(1087): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.…

【20120517】【早晨】

今天早上没去GIS程序设计的实验&#xff0c;窝在寝室准备看图论和汇编。。。不多说了&#xff0c;现在开始~~

OC类

2019独角兽企业重金招聘Python工程师标准>>> OC语言的一个类分为两个文件一个.h&#xff0c;一个.m&#xff0c;.h为头文件用来添加实例变量和方法声明。.m文件里面写入方法的实现 .h一般如下 interface 类名:父类 属性声明 方法声明 end .m一般如下 implementation…

06Prism WPF 入门实战 - Log控件库

1.概要源码及PPT地址&#xff1a;https://github.com/JusterZhu/wemail视频地址&#xff1a;https://www.bilibili.com/video/BV1KQ4y1C7tg?share\sourcecopy\web本章分为以下几个部分来了解&#xff1a;Part1 日志Part1.1 全局异常捕捉Part1.2 DumpPart2 引入控件库2.详细内容…

天冷打字全靠抖?!桌面暖手宝,体验10s速热,温暖升级,冬天有TA就够了

▲点击查看没有一丝丝防备&#xff0c;冷空气说来就来了~无论是寒风猛烈的北方&#xff0c;还是湿冷又没有暖气的南方&#xff0c;对于上班族来说&#xff0c;冬天最痛苦的事情莫过于哆哆嗦嗦在工位码字了&#xff01;冷风侵袭无处不在&#xff0c;备上个暖手袋&#xff0c;根本…