题目

给定一个 N*M 的棋盘,有一些格子禁止放棋子。

问棋盘上最多能放多少个不能互相攻击的骑士(国际象棋的“骑士”,类似于中国象棋的“马”,按照“日”字攻击,但没有中国象棋“别马腿”的规则)。

输入格式

第一行包含三个整数N,M,T,其中T表示禁止放置的格子的数量。

接下来T行每行包含两个整数x和y,表示位于第x行第y列的格子禁止放置,行列数从1开始。

输出格式

输出一个整数表示结果。

数据范围

1≤N,M≤100

思路

把坐标和为奇数的点视为棋盘的白色位置,偶数为黑色位置,跑一边二分图最大匹配即可

代码

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
typedef unsigned long long ull;#define x first
#define y secondconst int N=110;
int n,m,k;
pii match[N][N];
bool g[N][N],st[N][N];int dx[8]={-2,-1,1,2,2,1,-1,-2};
int dy[8]={1,2,2,1,-1,-2,-2,-1};bool find(int x,int y)
{for(int i=0;i<8;i++){int a=x+dx[i],b=y+dy[i];if(a<1||a>n||b<1||b>m) continue;if(g[a][b]) continue;if(st[a][b]) continue;st[a][b]=true;pii t=match[a][b];if(t.x==0||find(t.x,t.y)){match[a][b]={x,y};return true;} }return false;
}int main()
{//freopen("test.in","r",stdin);//设置 cin scanf 这些输入流都从 test.in中读取//freopen("test.out","w",stdout);//设置 cout printf 这些输出流都输出到 test.out里面去ios::sync_with_stdio(false);cin.tie(0),cout.tie(0);cin>>n>>m>>k;for(int i=0;i<k;i++){int x,y;cin>>x>>y;g[x][y]=true;}int res=0;for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){if((i+j)%2 || g[i][j])  continue;memset(st,0,sizeof st);if(find(i,j)) res ++;}}cout<<n*m-k-res<<endl;return 0;
}

AcWing 378. 骑士放置(最大独立集)相关推荐

  1. Acwing 378.骑士放置(二分图的最大独立集)

    Acwing 378.骑士放置 题意 给定一个 N×M 的棋盘,有一些格子禁止放棋子. 问棋盘上最多能放多少个不能互相攻击的骑士(国际象棋的"骑士",类似于中国象棋的"马 ...

  2. 378. 骑士放置——最大独立集+匈牙利算法

    给定一个 N×M 的棋盘,有一些格子禁止放棋子. 问棋盘上最多能放多少个不能互相攻击的骑士(国际象棋的"骑士",类似于中国象棋的"马",按照"日&qu ...

  3. AcWing 378. 骑士放置 题解

    原题链接 题目描述 给定一个 N*M 的棋盘,有一些格子禁止放棋子. 问棋盘上最多能放多少个不能互相攻击的骑士(国际象棋的"骑士",类似于中国象棋的"马",按照 ...

  4. Acwing 378. 骑士放置

    题目描述: 给定一个 N×M 的棋盘,有一些格子禁止放棋子. 问棋盘上最多能放多少个不能互相攻击的骑士(国际象棋的"骑士",类似于中国象棋的"马",按照&quo ...

  5. `Algorithm-Solution` `AcWing` 378. 骑士放置

    link Solution If we add the edge a−ba-ba−b where if a=(x,y)a=(x,y)a=(x,y) then bbb is the endpoint i ...

  6. 378 骑士放置(最大独立集)

    1. 问题描述: 给定一个 N×M 的棋盘,有一些格子禁止放棋子.问棋盘上最多能放多少个不能互相攻击的骑士(国际象棋的"骑士",类似于中国象棋的"马",按照&q ...

  7. 【ACWing】378. 骑士放置

    题目地址: https://www.acwing.com/problem/content/380/ 给定一个N×MN×MN×M的棋盘,有一些格子禁止放棋子.问棋盘上最多能放多少个不能互相攻击的骑士(国 ...

  8. 骑士放置 最大独立集

    一.内容 给定一个 N*M 的棋盘,有一些格子禁止放棋子.问棋盘上最多能放多少个不能互相攻击的骑士(国际象棋的"骑士",类似于中国象棋的"马",按照" ...

  9. AcWing P378 骑士放置 题解

    Analysis 这道题跟前几道题差不多,依旧是匈牙利算法求二分图匹配,在连边的时候,要连两个矛盾的位置(即一个骑士和其控制的位置).然后就跑一遍匈牙利算法就好了. 1 #include<ios ...

最新文章

  1. nanodet训练voc数据集
  2. R语言协方差分析(analysis of covariance)实战:协方差分析ANCOVA(analysis of covariance)(检查模型假设)、拟合协方差分析ANCOVA模型、事后分析
  3. mbstowcs 和 wcstombs函数:C语言提供的宽字符和多字节字符转换函数
  4. CentOS7 续续
  5. P1541-乌龟棋【多维dp】
  6. controller调用另一个controller中的方法 获取返回值_必须掌握!你知道 Spring 中运用的 9 种设计模式吗 ?...
  7. 通过Ajax异步请求数据
  8. OPPO海外功臣realme将回归国内 目标竞争对手:红米和荣耀
  9. 【网络安全工程师面试合集】—谈一谈什么是网络安全?
  10. 计算机组成原理 第七章 输入输出系统
  11. 增加限制模拟器2006-2-11
  12. 华中科技大学2005年计算机组成原理试题,华中科技大学2005年计算机组成原理试题...
  13. 通用各类数据库密码字典
  14. bodymovin导出没有html5,AE导出Web动画插件Bodymovin 5.7.6+使用教程 For CC 2014 – CC 2020...
  15. curl 命令测试post请求
  16. Git 团队协作常用术语 WIP PTAL CC LGTM
  17. 找回excel工作表保护密码
  18. 计算机分析学生表字段,巧用Excel数据透视表统计分析学生成绩
  19. Elasticsearch java API (19)Percolate API
  20. 5G步入规模化商用关键期

热门文章

  1. Selenium驱动firefox爬取今日头条并存放在MySQL数据库中
  2. 树与二叉树——递归算法、非递归算法求二叉树的深度
  3. 挪威kongsberg图像声呐
  4. 医学图像处理_专刊征稿|医学图像处理中的认知计算
  5. 露营从“非电”到“插电”,火星玩家开创“电核露营”的新时代
  6. 总线板卡(1)——总线接口类型
  7. 实现简单QQ注册页面
  8. 字节跳动面试难吗,应该如何应对?
  9. 海明码(汉明码,汉明距离)
  10. PDF管理控件Spire.PDF使用教程:如何创建PDF表格并添加图片到表格