首页 > 棋盘覆盖
头像 19-大数据一班-杨文冠
发表于 2021-01-19 16:16:29
思路: 一个骨牌覆盖两个相邻的格子,也就是相邻的格子有边相连,不相邻的格子没有边相连,所以可以分成两个集合,是偶数的和是奇数的分开,恰好与“0要素”对应。每个格子只能被1张骨牌覆盖,恰好与“1要素”对应。将没有被禁止的格子分成左右两个集合,建一个左集合节点到右集合节点的有向图(根据具体实现的原理可以 展开全文
头像 这次会中奖的!!!
发表于 2020-12-09 19:30:16
题目链接 题意: 给一个nn的棋盘, 棋盘上有m个障碍,要求用12的多米诺骨牌进行掩盖。且任意两张骨牌都不重叠,障碍上不能有骨牌。 思路: 1*2的骨牌且骨牌不能有重叠,这个性质很容易想到二分图。 怎样建这个图呢? 将棋盘上的点提出来, 每个点与它相邻的四个点进行连边操作,这样见图就完成了 建图 展开全文
头像 GenmCai
发表于 2019-08-26 10:03:26
【题目】 给出一张n×n(n≤100)的国际象棋棋盘,其中被删除了一些点,问可以使用多少1*2的多米诺骨牌进行掩盖。 【题意】 题意简单,不做多说明,多米诺骨牌可以理解为长方形的方块。 【题解】 仔细一想,可以发现能用二分图来做。即可以把每个位置的点进行重新编号,相邻的两点具有不同的性质。比如说在2 展开全文
头像 louhc
发表于 2019-08-24 07:27:13
思路 放置多米诺骨牌可以看作与或或或匹配的过程.因为与,奇偶性不同,可以分成一个二分图.这样就变成一个二分图匹配问题,能匹配且都不是障碍的两个点之间连边,直接跑匈牙利即可. 代码 #include<bits/stdc++.h> using namespace std; #define i 展开全文
头像 minux_sufe
发表于 2020-07-04 23:02:37
#include <bits/stdc++.h> using namespace std; typedef pair<int, int> PII; #define fi first #define se second const int N=105; int n, m; 展开全文
头像 回归梦想
发表于 2021-01-14 00:00:49
题目: 给出一张n×n(n≤100) 的国际象棋棋盘,其中被删除了一些点,问可以使用多少1*2的多米诺骨牌进行掩盖。 题解: 先进行黑白染色,相邻的两个黑白就是一个骨牌,又因为一个格子不能放多个骨牌,所以相当于找每个格子的搭档(搭档即为相邻的点),使得搭档的数量足够多裸的二分图最大匹配 代码: