题目传送门

解法:
蛮水的最小割。
黑白染色
首先利用黑白染色将相邻点染不同颜色。
然后就会发现马步能跳到的点一定是不同的颜色。
然后就st向白点连1。
黑点向ed连1。
图中的马步白点向黑点连无限就好啦。
最小割经典模型吧我觉得。
最后用sum-最小割就完了呗。

代码实现:

#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<iostream>
#include<algorithm>
using namespace std;
struct node {int x,y,c,other,next;}a[1100000];int len,last[51000];
void ins(int x,int y,int c) {int k1,k2;len++;k1=len;a[len].x=x;a[len].y=y;a[len].c=c;a[len].next=last[x];last[x]=len;len++;k2=len;a[len].x=y;a[len].y=x;a[len].c=0;a[len].next=last[y];last[y]=len;a[k1].other=k2;a[k2].other=k1;
}
int head,tail,list[51000],st,ed,h[51000];
bool bt_h() {head=1;tail=2;list[1]=st;memset(h,0,sizeof(h));h[st]=1;while(head!=tail) {int x=list[head];for(int k=last[x];k;k=a[k].next) {int y=a[k].y;if(h[y]==0&&a[k].c>0) {h[y]=h[x]+1;list[tail++]=y;}}head++;}if(h[ed]==0)return false;return true;
}
int find_flow(int x,int f) {if(x==ed)return f;int s=0,t;for(int k=last[x];k;k=a[k].next) {int y=a[k].y;if(h[y]==h[x]+1&&a[k].c>0&&s<f) {t=find_flow(y,min(a[k].c,f-s));s+=t;a[k].c-=t;a[a[k].other].c+=t;}}if(s==0)h[x]=0;return s;
}
int map[210][210],s[210][210];
int dx[10]={-2,-1,1,2,2,1,-1,-2};
int dy[10]={-1,-2,-2,-1,1,2,2,1};
int n,m;int pt(int x,int y) {return (x-1)*m+y;}
int main() {scanf("%d%d",&n,&m);int sum=0;for(int i=1;i<=n;i++)for(int j=1;j<=m;j++){scanf("%d",&s[i][j]);if(s[i][j]==0)sum++;}memset(map,-1,sizeof(map));map[0][1]=1;st=n*m+1;ed=st+1;for(int i=1;i<=n;i++)for(int j=1;j<=m;j++) {if(j==1)map[i][j]=1-map[i-1][j];else map[i][j]=1-map[i][j-1];}len=0;memset(last,0,sizeof(last));for(int i=1;i<=n;i++)for(int j=1;j<=m;j++) {if(s[i][j]==1)continue;if(map[i][j]==0) ins(st,pt(i,j),1);else ins(pt(i,j),ed,1);}for(int i=1;i<=n;i++)for(int j=1;j<=m;j++) {if(s[i][j]==1||map[i][j]==1)continue;for(int k=0;k<=7;k++) {int tx=i+dx[k],ty=j+dy[k];if(s[tx][ty]==1||tx<1||tx>n||ty<1||ty>m)continue;ins(pt(i,j),pt(tx,ty),999999999);}}int ans=0;while(bt_h()==true)ans+=find_flow(st,999999999);printf("%d\n",sum-ans);return 0;
}

bzoj4808: 马(最小割)相关推荐

  1. [bzoj3175][bzoj4808][网络流-最小割]攻击装置/马

    Description 给定一个01矩阵,其中你可以在0的位置放置攻击装置.每一个攻击装置(x,y)都可以按照"日"字攻击其周围的 8个位置(x-1,y-2),(x-2,y-1), ...

  2. 【BZOJ4808/3175】马/[Tjoi2013]攻击装置 最小割

    [BZOJ4808]马 Description 众所周知,马后炮是中国象棋中很厉害的一招必杀技."马走日字".本来,如果在要去的方向有别的棋子挡住(俗称"蹩马腿" ...

  3. 最小割问题-Karger‘s algorithm

    上一篇文章我们提到了最小割问题,最小割问题在研究网络最薄弱环节相关问题上具备广泛应用.而这个问题如今也依旧是一个open problem.而今天我们就介绍一种求解最小割问题的概率型算法-Karger' ...

  4. S-T平面图中利用最短路求最小割(BZOJ 1001)

    BZOJ 1001: [BeiJing2006]狼抓兔子 最小割 题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1001 现在小朋友们最喜欢 ...

  5. [学习笔记]最小割之最小点权覆盖最大点权独立集

    最小点权覆盖 给出一个二分图,每个点有一个非负点权 要求选出一些点构成一个覆盖,问点权最小是多少 建模: S到左部点,容量为点权 右部点到T,容量为点权 左部点到右部点的边,容量inf 求最小割即可. ...

  6. POJ 1966 Cable TV Network【无向图点连通度 最小割 E-K算法求最大流】

    题目描述: 给你一个无向图,问你最少删掉几个点,使这个图成不连通. 解题报告: 概念 (1)一个具有 N 个顶点的图,在去掉任意 k-1 个顶点后 (1<=K<=N) 所得的子图仍连通, ...

  7. 最小割 ---- 2021 ccpc 威海 H city-safety(最大利润 = 最大收益 - 最小花费(最小割))

    题目链接 题目大意: 一棵树,加强第 iii 个点有 wiw_iwi​ 的花费,而如果距离某 个点 ≤p≤ p≤p 的所有点都加强了,则会有 vpv_pvp​ 的收益,求最大净收益. 解题思路: 树形 ...

  8. 最小割 ---- 集合冲突模型 ----- P1646 [国家集训队]happiness

    题面: 高一一班的座位表是个n*m的矩阵,经过一个学期的相处,每个同学和前后左右相邻的同学互相成为了好朋友.这学期要分文理科了,每个同学对于选择文科与理科有着自己的喜悦值,而一对好朋友如果能同时选文科 ...

  9. 最小割 ---- 二分图最大独立集(集合冲突模型) ---- 骑士共存 方格取数(网络流24题)

    二分图独立集 定理: 二分图最大独立集=n - 二分图最大匹配 其实二分图独立集是特殊的一种最大权闭合子图.我们根据上文"收益"的思想,把选某个点的收益看为1,左部节点为正权点,右 ...

最新文章

  1. Android开发--List与ArrayList区别
  2. 【实验】 策略路由配置案例
  3. 计算机选配 注意事项,选择鼠标注意事项有哪些
  4. HTML+CSS+JS实现 ❤️仿切水果小游戏❤️
  5. 时序模型预测结果:DM检验含义与python实现
  6. 分布式存储--理解分布式文件系统、分布式块存储、分布式对象存储、分布式数据库
  7. c防止随机数重复_铝及铝模板等焊接常见缺陷、和防止措施12招
  8. GoogLeNet网络的Pytorch实现
  9. java 全选 反选取值_全选反选以及获取选中的数据
  10. spring jdbc_Spring JDBC示例
  11. [国家集训队]聪聪可可
  12. 查看IIS进程所对应的应用程序池名称
  13. 用大数据挑选出国外最值得看的前50条swift教程(v.2019)
  14. android硬盘加密方法,Android硬盘加密工具
  15. 【Unity项目实战】手把手教学:飞翔的小鸟(2)脚本编写
  16. 信奥赛一本通 C++题解 2041【例5.9】新矩阵
  17. jt808终端鉴权_JT808-1: JT808协议、GB808协议、道路运输车辆卫星定位系统-北斗兼容车载终端通讯协议...
  18. Qt GraphicsItem 通过直线图元连接其他两个图元
  19. 小博老师解析Java核心技术 ——JDBC参数化查询(一)
  20. android 8.1 9.0 10.0 app应用卸载黑名单

热门文章

  1. python mql4跟单_MT4多功能本地跟单EA
  2. 计算机平面设计职业兴趣怎么写,中职生职业生涯规划书范文(美术设计类)
  3. CSS--- display属性的属性值
  4. 2022-2027年(新版)中国果汁饮料行业销售渠道与营销趋势预测报告
  5. 半年私域流量产值7.3亿,特步私域之路走对了吗?
  6. element ui table中想使得其中一列数据拥有横向滚动条的效果
  7. 华为机试题(Java)
  8. 手机自动关机故障分析与维修
  9. vc++实现组播传输
  10. mall4j开源商城