骑士放置 Page435 最大独立集

  • 棋盘问题首先黑白染色
  • 马移动的曼哈顿距离是3,必然是从白走到黑或者从黑走到白
  • 这题折腾了俩小时,就因为递归那里懒得写int,直接用了个全局变量,根本检查不出来,人傻了

代码:

const int maxn=2e4+7;
const int INF=0x3f3f3f3f;
const ll INFF=1e18;
bool mark[120][120],vis[maxn];
int linker[maxn],n,m,t,x,y;
int xx[8]={1,1,-1,-1,2,2,-2,-2};
int yy[8]={2,-2,2,-2,1,-1,1,-1};
int f(int x,int y){return m*(x-1)+y;}
vector<int> V[maxn];
bool dfs(int x)
{repp(i,0,V[x].size()){int y=V[x][i];//这边一定要加int,递归函数里面的变量得定义if (vis[y])continue;vis[y]=true;if (!linker[y]||dfs(linker[y])){linker[y]=x;return true;}}return false;
}
int count_()
{int ans=0;rep(i,1,n){rep(j,1,m){if ((i+j)%2==0){mem(vis,false);if (dfs(f(i,j)))ans++;}}}return ans;
}
int main()
{scanf("%d%d%d",&n,&m,&t);rep(T,1,t){scanf("%d%d",&x,&y);mark[x][y]=true;}rep(i,1,n){rep(j,1,m){if (mark[i][j])continue;rep(k,0,7){x=i+xx[k],y=j+yy[k];if (x<1||y<1||x>n||y>m||mark[x][y])continue;if ((i+j)%2==0)V[f(i,j)].pb(f(x,y));}}}W(n*m-t-count_());return 0;
}

骑士放置 Page435 最大独立集相关推荐

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

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

  2. 二分图——骑士放置(最大独立集)

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

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

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

  4. CH - 6901 骑士放置(二分图最大独立集-二分图最大匹配+奇偶拆点)

    题目链接:点击查看 题目大意:给出一个n*m的棋盘,有t个点是禁止放棋子的,现在按照马走日的规则,问在互不影响的情况下最多能放多少个马 题目分析:这里首先简单介绍一下二分图最大独立集的定义: 通俗来讲 ...

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

    思路:在位置x,y上走日字形,x+y+跳跃点坐标必定会从奇数变成偶数或者偶数变成奇数,可以形成一个二分图,不相互攻击就是点之间没有边,求最多的点之间没有边相连就是求最大独立集.二分图中最大独立集=点数 ...

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

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

  7. 算法竞赛进阶指南 骑士放置

    4: 最大独立集 :选出最多的点,使得选出的点之间没有边. 求最大独立集:选出最小的点可以破坏所有的边 <==>最小点覆盖 <==>最大匹配数. 假设最大匹配数为m,共有n个点 ...

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

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

  9. 骑士放置 最大独立集

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

最新文章

  1. 轻量级mysql服务_Navicat连接阿里云轻量级应用服务器mysql
  2. UVa12604 Caesar Cipher(kmp)
  3. 【微信开发】微信开发 之 开启开发模式
  4. 如何手工快速判断目标站是windows还是linux服务器
  5. 女程序员怀孕7个月坚持上班敲代码
  6. 腾讯云数据库 MySQL 8.0 正式上线,性能全面超越官方版本
  7. python爬取商城数据_Python爬取新版CRMEB小程序商城后台订单数据,保存为excel
  8. python -sorted 学习
  9. java列表展开折叠,jQuery Datatables rowGroup折叠/展开
  10. MapReduce 学习指南
  11. Handler机制使用时候一些问题记录
  12. 面试问到处理过什么棘手问题_为什么调节人工智能如此棘手?
  13. 3DEC离散元数值模拟技术与应用
  14. Android如何实现汉字手写输入法(带中文自动识别提示)
  15. ubuntu linux 批量删除文件
  16. Si24R1,CI24R1,nRF24L01简单解析对比
  17. 联想Lenovo拯救者 Legion R9000P 2021H 触控板失灵
  18. 深度学习系统 深度学习软件
  19. SIM7600连接MQTT流程
  20. 记录回家第一天的bug解决和心理过程

热门文章

  1. web安全攻防渗透测试笔记 (信安一班 李静)
  2. 视觉营销之推销产品创意的5大技巧
  3. ardruino控制继电器_Arduino 各种模块篇-继电器
  4. 11月13号,我们在杭州有个高规格的大会,来玩啊
  5. USACO2.4.4 Bessie Come Home (comehome)
  6. 安装mac版office
  7. QT通过按钮打开txt文件亲测实用
  8. [内附完整源码和文档] 基于java web的台球厅管理系统的设计与实现
  9. python matplotlib画图实例正弦 SIN()和余弦COS()曲线
  10. 案例分析考点精编JS-2(沟通 至 项目组合)