uvalive4043 二分图

xxx@xxx.com lorem ipsm dolor sit amet 立即下载

题目大意:给你n个白点和n个黑点的平面坐标,要求用n条不相交的线连起来,每条线段连一个白点和黑点,每个点连一条线,所有的连线都不橡胶,也就是匹配。让你输出第i个白点所对应的黑点。

解题思路:二分图完美匹配问题。但是题目中有个线段不相交,怎么办?其实这个最佳完美匹配就是答案了。最佳完美匹配是权值和最大,那么我们就把两两点线段的权值搞成他们距离的负数即可。这样就不可能有相交的了。为什么?因为假设有相交,a1-b2,a2-b1,而dist(a1,b1)+dist(a2,b2) 肯定比前面交叉的小,可利用三角形三边关系证明,那么负数就是大了,也就是说交叉的在我们设计的负权那里是小的,所以就是最佳,也就是不可能有交叉的。保证最小的权值,所连的边一定是可以不相交的.
这样分析清楚了之后,就只要直接套用KM就OK了!

代码如下:

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
#include<cmath>
#define N 110
using namespace std;
typedef long long ll;
const double inf=1e40;
const double eps=1e-6;
double s[N][N],slack[N];   //s[i][j]存相应的 集合A点i到集合B点j的距离
double lx[N],ly[N];
int mat[N],n;      //用来保存 每个点相应的 最佳匹配的匹配点
bool vx[N],vy[N];
bool dfs(int u)
{
    vx[u]=1;
    for(int i=1; i<=n; i++)
    {
        if(!vy[i])
        {
            double t=lx[u]+ly[i]-s[u][i];
            if(fabs(t)<eps)
            {
                vy[i]=1;
                if(mat[i]==-1||dfs(mat[i]))
                {
                    mat[i]=u;
                    return 1;
                }
            }
            else slack[i]=min(slack[i],t);
        }
    }
    return 0;
}
void KM()
{
    memset(mat,-1,sizeof(mat));
    memset(ly,0,sizeof(ly));
    for(int i=1; i<=n; i++)
    {
        lx[i]=-inf;
        for(int j=1; j<=n; j++)
            lx[i]=max(lx[i],s[i][j]);     //负数取max 等价于 正数取min  lx[i]用于存放 从集合A中的i点 到集合B 的最长路径
    }
    for(int i=1; i<=n; i++)
    {
        for(int j=1; j<=n; j++)slack[j]=inf;
        while(1)
        {
            memset(vx,0,sizeof(vx));
            memset(vy,0,sizeof(vy));
            if(dfs(i))break;
            double d=inf;
            for(int j=1; j<=n; j++)
                if(!vy[j])d=min(d,slack[j]);
            for(int j=1; j<=n; j++)
                if(vx[j])lx[j]-=d;
            for(int j=1; j<=n; j++)
                if(vy[j])ly[j]+=d;
        }
    }
    for(int i=1; i<=n; i++)
        printf("%d\n",mat[i]);
}
double bx[N],by[N],wx[N],wy[N];  // 存相应的点的位置
double dis(int i,int j)          //计算 点之间的距离
{
    return sqrt((wx[i]-bx[j])*(wx[i]-bx[j])+(wy[i]-by[j])*(wy[i]-by[j]));
}
int main()
{
    int flag=0;
    while(cin>>n)
    {
        for(int i=1; i<=n; i++)cin>>bx[i]>>by[i];
        for(int i=1; i<=n; i++)cin>>wx[i]>>wy[i];
        for(int i=1; i<=n; i++)
        {
            for(int j=1; j<=n; j++)
            {
                s[i][j]=-dis(i,j);      //因为是求 权值和最大的完美匹配 因此在进行权值计算的时候 对每个权值取负 只这样计算出来的最大值 对应的就是正值的最小值
                //printf("%d %d %f\n",i,j,s[i][j]);
            }
            //printf("\n");
        }
        if(flag)printf("\n");
        KM();
        flag=1;
    }
    return 0;
}


Magnet磁力资源 Magnet磁力资源,超强的磁力资源器,磁力资源,磁力资源 立即下载

相关推荐

caoporn-video-address-extractor:双击以获取CaoPorn的视频地址

caoporn视频地址提取器 双击获取视频地址!

2025软考网络工程师--基础知识精讲视频

对软考网络工程师教材进行了详细解析,通过对考查知识点的细致讲解,让考生掌握解题思路和方法,做到举一反三,事半功倍。小任老师帮你把握考试重点,用短的时间,让你学到应该掌握的软考网络工程师内容。

几个好看实用的网站导航

几个好看实用的网站导航 自己辛苦整理 今天吐血 分享 哈哈 网站 导航 使用 好看

FFmpeg播放器理论与实战(Qt+QSS)

1.比较系统地讲解音视频基础理论:音频基础、视频基础、编解码基础、等。2.比较系统地学习ffmpeg,剖析ffmepg sdk,可以进行二次开发。3.使用Qt,Qss开发专业的基于ffmpeg的播放器。梅老师从事音视频与流媒体行业18年;曾在永新视博、中科大洋、百度、美国Harris广播事业部等公司就职,经验丰富;曾亲手主导广电直播全套项目,精通h.264/h.265/aac,曾亲自参与百度app上的网页播放器等实战产品。目前全身心自主创业,主要聚焦音视频+流媒体行业,精通音视频加密、流媒体在线转码快编等热门产品。 

TorrentToMagnet

PHP 转换BT种子到 磁力链

XXX.rar_39xxx俄罗斯_JAVA俄罗斯方块_XXX俄罗斯_俄罗斯xxx_俄罗斯xxx动漫

俄罗斯方块游戏,用Java编,可在ECLIPSE环境下运行

训练指南 UVALive - 4043(二分图匹配 + KM算法)

layout: post title: 训练指南 UVALive - 4043(二分图匹配 + KM算法) author: "luowentaoaa" catalog: true mathjax: true tags: - 二分图匹配 - 图论 - 训练指南 Ants UVALive - 4043 题意 给你n个白点和n个黑点的平面坐标,要求用n条不相交的线连起来,每条线段连一个白点和黑点,每...

weixin_30379973的博客 199

电影网址大全网站源码 v20131101

电影网址大全,吸取了以往各种导航网址程序的优点,最大程度的完善优化了各项功能和指标,采用谁对我站贡献大,我站也给予他宣传和展示的机会就越多的流量交换模式,只要您在本系统注册登记您的网址,然后在你网站做好我站连接或是挂上流量互换代码,每次您网站有用户访问到放置我站流量互换代码的站,那么你的网站将在最近入站以及你网站所在分类的第一位置!连接双方公正平等。 1.管理目录admin,管理员用户名19mt,密码19mtcom 2.修改数据库名19mtcom.asa修改成自己想要的名即可! 3.后台分类建议自己修改,要不大家的分类都相同影响百度收录。 ☆系统前台简介☆ 1.采用ASP+ACCESS架构,安全稳定,防注入功能; 2.新闻文章发布功能支持无限级分类,方便自由; 3.数据库经过防下载等安全处理,后台可超强命名,随意改动; 4.每来访一个IP,来访网站就会自动排到第一,当天来路不同,显示颜色也不同,鼓励点入; 5.前台统计数据调用,最新点入网站调用,未审核网站调用等; 6.申请加入电影网址大全的网站按最后点进的时间排序首页和分类显示链接; 7.分类以昨日点入时间为准,每晚十二点后生成静态; 8.每来访一个IP,就会自动排到第一,当天来路次数不同,显示颜色也不同:有1次即显示,10次即套蓝色,30次即套红色加粗; 9.首页白天3分钟,晚上5分钟自动更新一次,全站24小时手动更新一次; 10.站内搜索功能,方便用户找到自己想要的网址; 11.程序全面优化和升级,增强对搜索引擎的收录功能; 12.流量互换功能,最大程度互换流量。 ☆系统后台功能详细说明☆ ☆网站管理系统 1.网站基本信息,说明:里面设置,网站标题,LOGO,关键词,统计代码,版权信息! 2.图片广告管理,说明:网站所有图片广告修改的地方,在首页可以看到所有图片广告,其中ads09是在网址内页显示!其它的都在首页和分类页有位置显示! 3.顶部文字广告管理,说明:这里的文字,首页,特别推荐里面显,分类首页和分类页,记得,改后要在生成html管理里,生成一下首页! 4.添加商家文字广告,说明:这里的文字,首页,中间部分,广告,那里的文字,在图片广告下面,一行七个! 5.管理商家文字广告,说明:修改删除商家文字广告! 6.管理帐号设置,说明:管理员用户名,密码的修改! 9.客户留言管理,说明:留言本的回复,修改和删除! ☆网站分类管理 1.类别添加管理,说明:分类添加删除管理,这里说明一下添加时有首页显示,导航就显示在首页上面,添加时选酷站显示,就在首页下面酷站里调用! 2.类别删除管理,说明:删除不想要的分类! 3.类别修改管理,说明:分类修改里,有显示,[首][酷]就是上面说明的首页显示,和酷站显示! ☆网址管理系统 1.添加网址链接,说明:用于后台管理员手工添加网址 2.添加实用查询|管理实用查询,说明:添加后在首页实用工具里显示! 3.添加名站导航|管理名站导航,说明:添加后在首页名站导航里显示! 4.添加友情链接|管理友情链接,说明:添加后在首页下部友情链接里显示! 5.查看所有的网址,说明:包含站长加的和用户自己加的! 6.站长加入的网址,说明:站长加入的网址! 7.用户加入已审核,说明:用户提交的网址,并通过审核的,说明一下,本站有自动审核功能,开启关闭,在 网站管理系统-网站基本信息里设置! 8.用户加入未审核,说明:用户提交的网址没审的,也就是没有作上本站链接的,或是作上链接没有点击到本站的! 9.有来路入未审核,说明:一般用户认为,有来路就应当审核了,这个功能,是为了关闭自动审核而设计的,手工审核的不管有没有来路,都要站长审核的! 10.加入黑名单网站,说明:加入黑名单的网址,点击这个导航,进入后,可以删除,和取消黑名单! 11.总来路小于五次,说明:本设计用于客户作上本站链接,点入量过小,没有贡献的站,可以多选删除! 12.常用维护共三项,说明:(1)开通所有未审的,一般不用这个,如果想要提交的站就收录,可以点击这个功能!(2)删除重复的网站,有一些站长提交过了,又提交了多次或是用二级域名提交,这样可以删除重复的网站!(3)删除所有未审核的站点,(4)清空所有网址,这个点时要注意,点击了,所有网址就都没有了! 13.站内报错,说明:用户在网址详提交网址打不开的情况页点击的! 14.站内网站搜索,说明:可以按名称,按网址,按分类,按ID号进行搜索! ☆模版修改管理 首 页 模版修改 分类页模版修改 关于本站页模板 (这里建议会一些HTML知识的站长修改,如果不会不建议修改以免出错,修改时一定要备份) ☆生成html管理 生成分类页面 生成生成主页及其他页 重置统计数据 清除昨天点入数据 清除总点入数据 清除总点出数据 (

Uvalive 4043 - Ants(二分图完美匹配)

题目链接 https://vjudge.net/problem/UVALive-4043 【题意】 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;给出n个白点和n个黑点的坐标,要求用n条不相交的线段把它们连起来,其中每条线段恰好连接一个白点和一个黑点,每个点恰好连接到一条线段 【输入格式】 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&...

Change the world by program. 263

MSP430FR6x7x_Code_Examples.zip_69XX网站_msp430_msp430fr69xx_www69x

msp430fr69xx代码示例,超详细msp430示例程序

【Proteus】NE555纯硬件实现LED呼吸灯效果,附源文件,效果展示

本设计通过NE555与三极管的巧妙配合,仅用基础元件实现了呼吸灯效果。核心在于利用RC积分电路将PWM信号转换为控制电压,并通过负反馈动态调节占空比。Proteus仿真验证了方案的可行性,读者可进一步优化参数或扩展功能,探索更多硬件设计可能性。

2201_75797484的博客 2983

UVALive4043[Ants] 二分图完美匹配 KM算法

UVaLive4043 二分图匹配 KM算法

Venishel的博客 310

工程伦理-知识点汇总

工程伦理-知识点汇总

m0_46091747的博客 1万+

UVALive 4043 Ants(二分图完美匹配)

题意:每个蚁群有自己的食物源(苹果树),已知蚂蚁靠气味辨别行进方向,所以蚁群之间的行动轨迹不能重叠。现在给出坐标系中n个蚁群和n棵果树的坐标,两两配对,实现以上要求。输出的第 i 行表示第 i 个蚁群应该去哪棵果树。(已知2*n个点互不重合) 容易想到二分完美匹配,但究竟以什么为权值?需要利用一个关系:两条线段如果相交,那么线段长度之和必然大于其四个点不相交的连法对应的线段长度之和。(...

aizhengcuo9261的博客 232

新手避坑指南:HT7036计量芯片SPI读取电压的完整流程(从复位到校准)

本文详细介绍了HT7036计量芯片的SPI读取电压完整流程,从硬件准备到校准设置,重点解析了复位引脚处理、SPI通信配置、芯片初始化及数据处理等关键步骤。针对常见问题如晶振焊接、SPI时序错误等提供实用解决方案,帮助开发者高效完成电压测量与校准。

weixin_30070339的博客 326

120、NPU的Mythic M1076:模拟存算一体NPU

这篇文章分享了作者调试Mythic M1076模拟存算一体NPU的实战经验,主要包含以下要点: 硬件设计陷阱:参考电压输入必须使用低ESR电容,普通贴片电容会导致模拟计算阵列工作异常。 核心技术原理: 采用真正的存算一体架构,将权重存储为模拟电压 使用浮栅晶体管存储权重,通过电流叠加实现乘法运算 包含108个计算单元阵列(Tile),每个256×256规模 使用注意事项: 编程模型特殊,需要依赖SDK自动映射网络层 存在6-8位有效精度限制,需用量化感知训练 功耗特性独特,静态偏置电流占主要功耗 调试手段有

m0_50546716的博客 122

Uvalive 4043 Ants —— 二分图最大权匹配 KM算法

题目链接:https://vjudge.net/problem/UVALive-4043 题意: 给出n个白点和n个黑点的坐标, 要求用n条不相交的线段把他们连接起来,其中每条线段恰好连接一个白点和黑点,每个点恰好连接到一条线段。输出每个白点与其相连的黑点的编号。 题解: 1.首先随便配对。然后,如果存在两对黑白点的线段是相交的,那么就交换他们的配对...

alince20008的博客 234

Unity3D 加密 Assembly-CSharp.dll (Android平台) 防止反编译

0、加密的原理 Unity3D 是基于 Mono的,我们平时写的 C# 脚本都被编译到了 Assembly-CSharp.dll ,然后 再由 Mono 来加载、解析、然后执行。 Mono 加载 Assembly-CSharp.dll 的时候就是读取文件到内存中,和平时读取一个 游戏资源 文件没什么区别。 为了防止别人破解,我们会对游戏资源加密,简单点的 比如修改文件的一个字节 或者 位移一下

Circle 8721

UVaLive 4043 Ants(二分图最佳完美匹配、KM)

题意: 有n个蚂蚁n棵树,蚂蚁与树要配对,在配对成功的一对之间连一条线段,要求所有线段不能相交。按顺序输出蚂蚁所匹配的树。 分析: 二分图完美匹配问题。但是题目中有个线段不相交,怎么办?其实这个最佳完美匹配就是答案了。最佳完美匹配是权值和最大,那么我们就把两两点线段的权值搞成他们距离的负数即可。这样就不可能有相交的了。为什么?因为假设有相交,a1-b2,a2-b1,而dist(a1,b1)+

HARD_UNDERSTAND 441

手把手教你学Simulink--智能控制算法的控制算法领域仿真建模实例:基于Simulink的遗传算法优化控制仿真模型

通过上述步骤,你可以设计并仿真一个基于Simulink的遗传算法优化控制模型。这种方法适用于许多复杂的优化场景,尤其是当传统方法难以找到最优解时。随着经验的积累,你可以进一步优化遗传算法的参数设置,或者结合其他智能优化技术(如粒子群优化、差分进化等)提升优化性能。

MHD0815的博客 208

RH850从0搭建Autosar开发环境【3X】- Davinci Configurator之OS模块配置详解(中)

RH850从0搭建Autosar开发环境【3X】- Davinci Configurator之OS模块配置详解(中)

weixin_42412049的博客 1516

UVALive 4043 Ants(二分图最佳完美匹配、KM)

题目:https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=2044 题目大意:给你n个白点和n个黑点的平面坐标,要求用n条不相交的线连起来,每条线段连一个白点和黑点,每个点连一条线,也就是匹配。让你输出第i个白点所对应的黑点。 解题思路:二分

沉溺的专栏 940

UWB:FiRa Consortium UCI Generic Technical Specification v1.1.0(1)- UCI架构和通用数据包头

如果大家学习过WiFi的SPEC,比如从我的资源里面下载 IEEE 802.11-2007,应该很容易发现,FiRa的spec定义实在是太差了。有现成的好例子不学,非得自己来一套,搞一堆新的名词,其实都是一个意思。比如GID,OID等,而且GID、OID是最先出现的,但是对应表格 还得去附件的最后一项去找。 FiRa是UWB联盟,希望跟WIFi联盟学习一下,把UWB做大做强,而不是自成一派,自命不凡。

Ankie资深技术项目经理 2434
上一篇: poj2389 大数问题-大数相乘
下一篇: hdu 1068 最大独立子集问题
H-PAI
博客等级 码龄11年 3粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值