HDU 1507 Uncle Tom's Inherited Land* 二分图最大匹配

HyperLynx(十五)多板仿真 在对话框的“Design file#1”下拉列表中选择“B00,Mainboard”,在其下方的“Reference designators”列表中选择元器件“J1”,然后在“Designfile#2”下拉列表中选择“BO1、RAM1”,在其下方的“Refer ence designators”列表中选择元器件“J1”,单击“Insert”按钮,为这两个元器件建立互连映射。在“Assign Models”对话框中,选择“B00 Motherboard”,将“U16.B12”设置为输出。 阅读详情
题意:有N*N的地,其中有些是水池,如果空地形成1*2的大小就可以卖掉。问:最多可以卖掉多少块空地?输出每块空地在N*N矩阵中的位置。
思路:(i+j)是奇数的作为X部,(i+j)是偶数的作为Y部,空格相邻就连一条线,找最大匹配即可。

http://acm.hdu.edu.cn/showproblem.php?pid=1507

/*********************************************
    Problem : HDU 1507
    Author  : NMfloat
    InkTime (c) NM . All Rights Reserved .
********************************************/

#include <map>
#include <set>
#include <queue>
#include <cmath>
#include <ctime>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <iostream>
#include <algorithm>

#define rep(i,a,b)  for(int i = a ; i <= b ; i ++)
#define rrep(i,a,b) for(int i = b ; i >= a ; i --)
#define repE(p,u) for(Edge * p = G[u].first ; p ; p = p -> next)
#define cls(a,x)   memset(a,x,sizeof(a))
#define eps 1e-8

using namespace std;

const int MOD = 1e9+7;
const int INF = 0x3f3f3f3f;
const int MAXN = 1e5;
const int MAXE = 2e5;

typedef long long LL;
typedef unsigned long long ULL;

int fx[] = {0,1,-1,0,0};
int fy[] = {0,0,0,-1,1};

struct Edge { //记录边
    int to;
    Edge * next;
}E[MAXE],*EE;

struct Gragh { //记录图的结点
    Edge * first;
}G[MAXN];

int N,M;//二分图左右结点的个数
bool visit[MAXN];
int match[MAXN];//v2中匹配的情况

void addedge(int u,int v) { //加边
    EE->to = v ; EE -> next = G[u].first ; G[u].first = EE ++;
    //EE->to = u ; EE -> next = G[v].first ; G[v].first = EE ++;
}

int T,n,m;

void init() {
    EE = E; N = M = 0;
    cls(G,0);
}

bool find_path(int u) {
    int v;
    repE(p,u) {
        v = p->to;
        if(!visit[v]) {
            visit[v] = 1;
            if(match[v] == -1 || find_path(match[v])) {//v没有匹配或者v可以找到另一条路径
                match[v] = u;
                return true;
            }
        }
    }
    return false;
}

int Max_match() {
    cls(match,-1);
    int cnt = 0;
    rep(i,1,N) {
        cls(visit,0);
        if(find_path(i)) cnt ++;
    }
    return cnt;
}

bool Map[105][105];
int idx[105][105];
int dx[105];
int dy[105];

void input() {
    cls(Map,0);
    int k;
    scanf("%d",&k);
    rep(i,1,k) {
        int x,y;
        scanf("%d %d",&x,&y);
        Map[x][y] = 1;
    }
}

void solve() {
    cls(idx,0);
    rep(i,1,n) rep(j,1,m) { //重新编号
        if(!Map[i][j]) {
            if((i+j)&1) idx[i][j] = ++N;
            else idx[i][j] = ++M;
        }
    }
    rep(i,1,n) rep(j,1,m) { //编号映射成地址
        if(!Map[i][j]) {
            int pos = idx[i][j];
            if((i+j)&1) { dx[pos] = i; dy[pos] = j; }
            else {dx[N+pos] = i ; dy[N+pos] = j; }
        }
    }
    rep(i,1,n) rep(j,1,m) {
        if(!Map[i][j]) {
            if((i+j)&1) {
                rep(k,1,4) {
                    int tmpx = i + fx[k];
                    int tmpy = j + fy[k];
                    if(tmpx >= 1 && tmpx <= n && tmpy >= 1 && tmpy <= m && (!Map[tmpx][tmpy])) {
                        addedge(idx[i][j],idx[tmpx][tmpy]+N);
                    }
                }
            }
        }
    }
    int MT = Max_match();
    printf("%d\n",MT);
    rep(i,N+1,N+M) {
        if(match[i] + 1) {
            printf("(%d,%d)--(%d,%d)\n",dx[match[i]],dy[match[i]],dx[i],dy[i]);
        }
    }
}

int main(void) {
    //freopen("a.in","r",stdin);
    while(scanf("%d %d",&n,&m),n+m) {
        init();
        input();
        solve();
    }
    return 0;
}
beegfs读取文件完整流程分析 读取小于512KB文件数据,小于1s 读取15MB文件数据,花费7秒。 阅读详情

相关推荐

告别命令行恐惧!用nTopology可视化工具5分钟搞定三维Voronoi泡沫建模

本文介绍如何利用nTopology可视化工具快速生成三维Voronoi泡沫结构,无需编程即可完成复杂建模。Voronoi结构在轻量化设计、能量吸收和生物医学等领域具有重要应用,传统命令行方法门槛较高。通过nTopology的四步流程,用户可在5分钟内创建仿真就绪模型,大幅提升设计效率。

weixin_30764771的博客 425

浏览器Http请求头部比较(多浏览器http请求头)

转自:http://blog.youkuaiyun.com/kjb000/article/details/7774588   谷歌浏览器 GET /favicon.ico HTTP/1.1 Host: localhost Connection: keep-alive Accept: */* User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) Apple

Hello World! 7066

减小伺服电机共振的方法(以松下伺服为例)

嘿 ! 我是【小黄】 , 我们又见面啦 !!! 毕竟技术只有大家交流才会进步嘛 ! 这博客是对自己学习的一点点记录和总结 ,如果您对自动控制感兴趣的话 ,可以关注一下我的动态 , 我们一起学习呀 ! 我们都还年轻 ,我们还有无限可能 。 YES ! 减小伺服电机共振的方法(以松下伺服为例)1. 准备工作:1.1.1 如何推定共振点:1.1.2 测定实操:1.1.3 总结:2. 下期预告: 在我们调试完伺服参数以后机器人运动到某个特定位置会产生振动或异响,我们要做的就是消除这个异响保..

在下小黄的博客 1万+

tomcat环境下配置https(二)

整理下之前的资料,备份存放 二:tomcat配置 &lt;1&gt;打开tomcate conf目录 找到tomcat-users.xml 打开之后,找到如下代码段,去掉注释 如下图 去掉注释 如下: 然后添加如下代码: &lt;role rolename="manager"/&gt; &lt;role rolename="manager-gui"/&gt; 替换 代码...

松雨林的专栏 450

Huber损失函数中的阈值δ是如何确定的?

Huber损失函数通过阈值δ将误差划分为两部分:当误差小于等于δ时,采用平方损失(MSE),以保持对小误差的敏感性;当误差大于δ时,采用线性损失(MAE),以降低异常值对模型的影响。

百态·数智思维 | 聚焦大数据、量化与未来AI 1926

LaTex的下载与安装(2024小白+windows系统)

本文主要介绍了Latex的下载与安装,还包括安装过程中遇到的小问题的解决。

m0_53096519的博客 2万+

Tomcat访问路径去掉发布项目的项目名称

需求:&nbsp;把发布到Tomcat下的web项目,访问路径去掉项目名称&nbsp;问题背景:&nbsp;以前的.net些的WebService,现在改用java来写了。已经把wsdl搞的基本一致了,但是由于原webservice发布到iis网站的根目录了,所以访问的时候也就没有虚拟目录的名字。但是java写的WebService,放到Tomcat下的时候,默认会带上项目的名称。就多了这么一段:...

愿世界和平 3136

ABAP ALV编辑后触发事件

1.FUNCTION ALV在it_events的参数中,写入对应的事件。2.OO ALV和FUNCTION ALV都可以,注册当前ALV的事件,对应的事件需要创建对象去实现。下面代码中,实现的是第一种,在it_events中写入事件。下面的代码是通过创建对象去实现ALV事件。

a86632678的博客 3852

uva 1592 代码无解析 可以评论问

妙个鸡儿。。。。。。。#include&lt;iostream&gt;#include&lt;map&gt;#include&lt;string&gt;#include&lt;string.h&gt;#include&lt;cstdio&gt;#include&lt;vector&gt;using namespace std;int aaa[10005][15];int counts;map&lt...

artistkeepmonkey的博客 356

基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的零售柜商品检测软件(Python+PySide6界面+训练代码)

随着新零售概念的兴起,无人零售柜、智能零售店等新型零售模式快速发展。传统零售柜依赖于人工盘点和补货,效率低下且成本高昂。本文提出了一种基于YOLO系列目标检测算法的零售柜商品检测系统,实现了对零售柜内商品的自动识别、计数和库存管理。系统采用PySide6开发用户界面,集成了YOLOv5、YOLOv6、YOLOv7和YOLOv8等多种先进的深度学习模型,提供了完整的训练和推理流程。本文将详细介绍系统设计、算法实现、数据集构建和实际应用效果,并提供完整的代码实现。

YOLO 331

【AFAC2026金融智能-赛题四】我做了一个疯狂的决定,把Embedding和Reranker全删了

本文介绍了AFAC2026金融智能挑战赛赛道四的解题思路,核心是在500万token的严格限制下实现金融长文本的高效问答。作者通过四步流水线(规划、BM25检索、记忆压缩、LLM推理)优化流程,重点创新在于: 采用零API调用的纯BM25检索,配合多路查询、封面页加权和页面邻接扩展等策略 设计高效的检索算法,从问题中提取专有名词并构建多路查询组合 深入理解评分公式,平衡准确率和token消耗,最终在准确率提升的同时将token消耗从数百万降至百万级 这些创新使方案在严格限制下实现了性能突破,展示了在资源受限

224

HDU 1507 Uncle Tom's Inherited Land*(行列匹配||棋盘覆盖||黑白染色||奇偶匹配(1X2的矩形覆盖))

题意:n*m的棋盘里,有几个点是不可以放的,要求在剩下的可以放的点上放置1X2的矩形,问最多可以放多少个 思路:观察发现,如果把矩阵按坐标和的奇偶分为A,B两个集合,每一个点可以到达周围的四个点,正好是1X2的覆盖,也就是分为A,B集合后的最大匹配。#include<cstdio> #include<iostream> #include<algorithm> #include<cmath> #in

qwesde 733

Hermes 教程 03:Skills 系统

摘要:Hermes Skills是一种自我改进机制,可将解决问题的经验保存为可复用技能文档。v0.13.0版本遵循agentskills.io开放标准,与Claude Skills互通。技能创建流程包括发现问题、创建技能文件、加载使用和优化更新四个阶段。系统提供技能检索和自维护机制(Curator),支持技能媒体路由和多种管理命令。内置技能涵盖开发调试、创意头脑风暴等场景,通过积累技能使Hermes更适应用户需求。

程序猿_三产 726

HDU 1507 Uncle Tom's Inherited Land* 二分图的最大匹配

Uncle Tom's Inherited Land* Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 2035    Accepted Submission(s): 842 Special Judge Problem Des

小人物的草稿本 853

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

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

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

hdu1507——Uncle Tom's Inherited Land*————————【二分图最大匹配、奇偶分离】

/*    二分图最大匹配,同时加上奇偶分离。用匈牙利算法增广找最大匹配及相互匹配的点对 */ 题目大意:有n*m的一块儿土地遗产,现在想要卖掉,已知黑格子是池塘不能卖,白格子需要两块儿连一起才能卖,问最多能卖多少个这样的可卖土地。 /** 划分奇偶 二分匹配 增广至最大匹配 */ #include #include #include #include usi

被虐的goshawk 657

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

HDU 1507 Uncle Tom's Inherited Land* 二分图最大匹配(基础题)

hdu 1507 二分图最大匹配,基础题 相邻节点之间的下标和存在奇偶关系,根据下标和的奇偶性建图。航电OJ 1507题目链接Uncle Tom’s Inherited Land*Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 2

南国的博客 676

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Hdu1507 Uncle Tom‘s Inherited Land【二分图最大匹配】

个人练习记录

m0_73500785的博客 1014

HDU 1507 Uncle Tom's Inherited Land*

Uncle Tom's Inherited Land* Time Limit : 2000/1000ms (Java/Other)Memory Limit : 65536/32768K (Java/Other) Total Submission(s) : 11Accepted Submission(s) : 7 Special Judge Problem Descri...

anvt77205的博客 171

hdu 1507 Uncle Tom's Inherited Land* (棋盘的完美覆盖问题)

题目链接:   hdu 1507 题目大意:   给出NxM的地图,地图上有空地和草地                   用1x2的草地去覆盖空地,问最多覆盖数 解题思路:   首先1x2的草地,涉及到两个相邻的空地                   若先选择第一个空地,则在没有草地的前提下第二个空地有四种选择                   分别从图中不同块任意一个顶点

ンZee的解题报告 2073

hdu Uncle Tom's Inherited Land*(1*2矩阵覆盖,最大匹配)

http://acm.hdu.edu.cn/showproblem.php?pid=1507 大致题意:在一个n*m的格子上,黑色的地方不可用,问在白色格子上最多可放多少1*2的矩阵。 思路:建图,每个白色格子与它临近的上下左右的白色格子建边,求最大匹配,答案为最大匹配/2,因为是双向图。最后输出匹配边时,当找到一组匹配边记得将该边标记,以防重复计算。 #includ

1307

HDU-1507-Uncle Tom's Inherited Land*

链接:https://vjudge.net/problem/HDU-1507 题意: Your old uncle Tom inherited a piece of land from his great-great-uncle. Originally, the property had been in the shape of a rectangle. A long time ago, ho...

weixin_34018169的博客 203

HDU 1507(Uncle Tom's Inherited Land*)

二分图的最大匹配问题。 每个格子的横坐标和纵坐标之和为奇数或偶数,和为奇数的格子只可能与和为偶数的格子相邻,所以将和为奇数的格子作为二分图的一边,将和为偶数的格子作为二分图的另一边,如果两个空地格子相邻,则在两者之间连线。然后计算二分图的最大匹配数即可。 #include <cstdio> #include <cstring> #include <cmath&g...

Intelligence1028的博客 228

HDU 1507 Uncle Tom's Inherited Land(黑白棋盘最大匹配)

/* 题意:N*M的矩形,向其中填充1*2的小块矩形,黑色的部分不能填充,问最多可以填充多少块。 题解:黑白棋最大匹配 将棋盘中i+j为奇数的做A集合,偶数的做B集合,相邻的则建立联系。于是便转换成寻找最大匹配的问题 */ #include #define re(i, n) for(int i = 0; i < n; ++ i) using namespace std; const int

1230

hdu 1507 Uncle Tom's Inherited Land*

这两天刚学二分图,对二分图的应用还不熟练;感觉自己还是太弱了,这题是参考别人代码的; 这题是把(i+j)的值得奇偶性来分图的,请原谅我没有想到,还是太水了..根本没有思路.. 先用一个数组暂时存起鱼塘位置,再通过判断,重新建图,对这个新图进行二分匹配; 1 #include <iostream> 2 #include <string.h> ...

diehuantuo8942的博客 181

Uncle Tom's Inherited Land(HDU-1507)

Problem Description Your old uncle Tom inherited a piece of land from his great-great-uncle. Originally, the property had been in the shape of a rectangle. A long time ago, however, his great-great-...

Alex_McAvoy的博客 821

HDOJ 1507(二分匹配) Uncle Tom's Inherited Land

http://acm.hdu.edu.cn/showproblem.php?pid=1507 思路如下: 1.读入池塘点,用mapp数组记录(0为空地,1为池塘) 2.当读入结束后,遍历所有的点,若为空地,则根据奇偶性将这些空地分别放入结构体数组ji和ou之中。(并用nj和no记录奇、偶点的数量),因为题干说了空地的数量小于等于50,所以数组不用开太大。 3.双层循环,枚举奇数偶数点,判断奇数点i...

REXWind的博客 245
上一篇: HDU 1528 Card Game Cheater 二分图最大匹配
下一篇: HDU 1530 Maximum Clique 最大团
_NMfloat_
博客等级 码龄12年 7粉丝 315原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值