洛谷3355 骑士共存问题
来源:互联网 发布:社工论坛数据库 编辑:程序博客网 时间:2024/05/21 14:57
题目描述
在一个 n*n个方格的国际象棋棋盘上,马(骑士)可以攻击的棋盘方格如图所示。棋盘上某些方格设置了障碍,骑士不得进入
对于给定的 n*n 个方格的国际象棋棋盘和障碍标志,计算棋盘上最多可以放置多少个骑士,使得它们彼此互不攻击 输入输出格式 输入格式:
第一行有 2 个正整数n 和 m (1<=n<=200, 0<=m< n2),分别表示棋盘的大小和障碍数。接下来的 m 行给出障碍的位置。每行
2 个正整数,表示障碍的方格坐标。输出格式:
将计算出的共存骑士数输出
发现格子可以分成黑白两部分,不能共存的连无穷大的边,分别向源、汇连1的边表示舍弃费用,最后求最小割。
#include<cstdio>#include<cstring>#include<algorithm>using namespace std;const int s=50005,t=50006,oo=0x3f3f3f3f;int xx[8]={-2,-2,-1,-1,1,1,2,2},yy[8]={1,-1,2,-2,2,-2,1,-1},fir[50010],ne[700010],to[700010],w[700010],f[50010],que[50010],ban[210][210],n,m,tot;void add(int u,int v,int x){ tot++; ne[tot*2]=fir[u]; fir[u]=tot*2; to[tot*2]=v; w[tot*2]=x; ne[tot*2+1]=fir[v]; fir[v]=tot*2+1; to[tot*2+1]=u; w[tot*2+1]=0;}bool ok(int x,int y){ return x>=1&&x<=n&&y>=1&&y<=n&&!ban[x][y];}bool bfs(){ int i,j,hd,tl,u,v; for (i=1;i<=n;i++) for (j=1;j<=n;j++) f[i*n+j]=0; f[t]=0; f[s]=1; hd=tl=1; que[1]=s; while (hd<=tl) { u=que[hd++]; for (i=fir[u];i;i=ne[i]) if (w[i]&&!f[v=to[i]]) { f[v]=f[u]+1; que[++tl]=v; } } return f[t];}int dfs(int u,int lim){ int ret=0,i,v,x; if (u==t) return lim; for (i=fir[u];i&&ret<lim;i=ne[i]) if (w[i]&&f[v=to[i]]==f[u]+1) { x=dfs(v,min(lim-ret,w[i])); ret+=x; w[i]-=x; w[i^1]+=x; } if (!ret) f[u]=0; return ret;}int main(){ int i,j,k,x,y,ans; scanf("%d%d",&n,&m); ans=n*n-m; while (m--) { scanf("%d%d",&x,&y); ban[x][y]=1; } for (i=1;i<=n;i++) for (j=1;j<=n;j++) if (!ban[i][j]) { if (i+j&1) { add(s,i*n+j,1); for (k=0;k<8;k++) if (ok(x=i+xx[k],y=j+yy[k])) add(i*n+j,x*n+y,oo); } else add(i*n+j,t,1); } while (bfs()) while (x=dfs(s,oo)) ans-=x; printf("%d\n",ans);}
0 0
- 洛谷3355 骑士共存问题
- 洛谷 P3355 骑士共存问题
- 骑士共存问题
- [codevs 1922] 骑士共存问题
- code vs 1922 骑士共存问题
- 骑士共存问题(最大流)
- 【网络流24题】骑士共存问题
- [CODEVS1922]骑士共存问题(最大流)
- [网络流24题]骑士共存问题
- codevs 1922 骑士共存问题 最小割
- wikioi 1922 骑士共存问题 最大独立集
- 骑士共存问题 二分图的最大独立集
- 骑士共存问题[网络流24题之24]
- 【线性规划与网络流24题 24】骑士共存问题
- 【codevs 1922】骑士共存问题(最大流DINIC)
- 线性规划与网络流24——骑士共存问题
- 【codevs1922】[网络流24题]骑士共存问题
- 网络流24题24. 骑士共存问题
- 为什么我设置焦距没有效果
- SQLZOO MORE JOIN OPERATION
- 第五天,终于实现了水下模糊效果(动态挂载脚本),blur里写入shader
- 【JDBC4.2】Wrapper和AutoCloseable
- post请求总是超时
- 洛谷3355 骑士共存问题
- Android Studio2.0的instant run要求Enable ADB integration,点击后DDMS就被强制断开了
- 使用Maven构建JavaWeb工程并设置Dynamic web module版本为3.0
- HTML5+CSS3整体回顾
- Spring Security教程(三)
- 一个好的目标应满足的原则(SMART)
- 如何根据接口写一个客户端进行发单测试?
- 关于“异或”的很好的解释
- Web Scraping with Python-Chapter1读书笔记