tyvj1035棋盘覆盖
来源:互联网 发布:陌生网友找我淘宝开店 编辑:程序博客网 时间:2024/05/16 00:42
http://www.tyvj.cn/p/1035
P1035 棋盘覆盖
时间: 1000ms / 空间: 131072KiB / Java类名: Main
描述
给出一张n*n(n<=100)的国际象棋棋盘,其中被删除了一些点,问可以使用多少1*2的多米诺骨牌进行掩盖。
输入格式
第一行为n,m(表示有m个删除的格子)
第二行到m+1行为x,y,分别表示删除格子所在的位置
x为第x行
y为第y列
第二行到m+1行为x,y,分别表示删除格子所在的位置
x为第x行
y为第y列
输出格式
一个数,即最大覆盖格数
测试样例1
输入
8 0
输出
32
#include<iostream>#include<cstdio>#include<cstring>#define maxn 105#define maxm 10005using namespace std;const int vx[4]={0,0,1,-1};const int vy[4]={1,-1,0,0};int n,m,link[maxm],cmap[maxm][maxn];int intmap[maxn][maxn],ans;bool map[maxn][maxn],vis[maxm];bool dfs(int s){for(int i=1;i<=cmap[s][0];i++)if(!vis[cmap[s][i]]){vis[cmap[s][i]]=true;if(link[cmap[s][i]]==-1||dfs(link[cmap[s][i]])){link[cmap[s][i]]=s;return true;}}return false;}int main(){memset(map,true,sizeof map);memset(cmap,0,sizeof cmap);ans=0;scanf("%d%d",&n,&m);for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)intmap[i][j]=i+(j-1)*n;for(int i=0;i<m;i++){int x,y;scanf("%d%d",&x,&y);map[x][y]=false;}for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)if(map[i][j]){int point=intmap[i][j];for(int a=0;a<4;a++){int x=i+vx[a];int y=j+vy[a];if(x>0&&x<=n&&y>0&&y<=n&&map[x][y]){int u=intmap[x][y];cmap[point][0]++;cmap[point][cmap[point][0]]=u;}}}memset(link,-1,sizeof link);for(int i=1;i<=n*n;i++)if(cmap[i][0]){memset(vis,false,sizeof vis);if(dfs(i))ans++;}printf("%d\n",ans/2);return 0;}
0 0
- tyvj1035棋盘覆盖
- 棋盘覆盖
- 棋盘覆盖
- 棋盘覆盖
- 棋盘覆盖
- 棋盘覆盖
- 棋盘覆盖
- 棋盘覆盖
- 棋盘覆盖
- 棋盘覆盖
- 棋盘覆盖
- 棋盘覆盖
- 棋盘覆盖
- 棋盘覆盖
- 棋盘覆盖
- 棋盘覆盖
- 棋盘覆盖
- 棋盘覆盖
- [noip2003]麦森数(快速幂+高精度)
- iOS中大流中的自定义cell 技术分享
- 2015最新最全 Android 谷歌消息推送GCM 详细使用教程
- Gitlab的使用
- 自反,反自反
- tyvj1035棋盘覆盖
- JAVA三星题之connect four
- coderforce 560A Currency System in Geraldion
- 多态的四种不同形式
- 国内开发者汇总
- iOS中 通知中心Text (实例)
- 说说Unity3D里的各种坐标系
- 无法将构造器应用到给定的类型
- 把Tomcat和JSP加入 MAC OS X Server