描述 Description  
  给出一张n*n(n<=100)的国际象棋棋盘,其中被删除了一些点,问可以使用多少1*2的多米诺骨牌进行掩盖。
     
     
  输入格式 Input Format  
  第一行为n,m(表示有m个删除的格子)
第二行到m+1行为x,y,分别表示删除格子所在的位置
x为第x行
y为第y列
     
     
  输出格式 Output Format  
  一个数,即最大覆盖格数
     
     
  样例输入 Sample Input  
  8 0
     
     
  样例输出 Sample Output  
  32
     
     
  时间限制 Time Limitation  
  各个测试点1s
     
     
  注释 Hint  
  经典问题
   

二分图匹配、、、、

#include<cstdio>

#include<cstring>

int n,m;

int x[4]={0,0,1,-1};

int y[4]={-1,1,0,0};

bool map[101][101];

int link[10010];

bool used[10010];

int head[10010],cnt;

struct TT

{

int v,next;

}edge[50000];

void addedge(int u,int v)

{

edge[cnt].v=v;

edge[cnt].next=head[u];

head[u]=cnt++;

}

bool can(int t)

{

for(int p=head[t];p!=-1;p=edge[p].next)

{

int v=edge[p].v;

if(used[v]==false)

{

used[v]=1;

if(link[v]==-1||can(link[v]))

{

link[v]=t;

return true;

}

}

}

return false;

}

int MaxMatch()

{

int num=0;

memset(link,-1,sizeof(link));

for(int i=1;i<=n*n;i++)

{

memset(used,false,sizeof(used));

if(can(i)) num++;

}

return num;

}

int main()

{

cnt=0;

memset(head,-1,sizeof(head));

memset(map,false,sizeof(map));

scanf("%d%d",&n,&m);

for(int i=1;i<=m;i++)

{

int x,y;

scanf("%d%d",&x,&y);

map[x][y]=true;

}

for(int i=1;i<=n;i++)

for(int j=1;j<=n;j++)

if(!map[i][j])

{

int num=(i-1)*n+j;

for(int k=0;k<4;k++)

{

int xx=i+x[k];

int yy=j+y[k];

if(xx>=1&&xx<=n&&yy>=1&&yy<=n&&!map[xx][yy])

{

int numb=(xx-1)*n+yy;

addedge(num,numb);

}

}

}

printf("%d/n",MaxMatch()/2);

return 0;

}

TYVJ p1035 棋盘覆盖相关推荐

  1. 递归与分治之棋盘覆盖问题

    在一个2^k * 2^k个方格组成的棋盘中,若有一个方格与其他方格不同,则称该方格为一特殊方格,且称该棋盘为一个特殊棋盘. 显然特殊方格在棋盘上出现的位置有4^k种情形.因而对任何k≥0,有4^k种不 ...

  2. 计算机基础算法棋盘覆盖,分治算法求解棋盘覆盖问题互动教学过程.doc

    分治算法求解棋盘覆盖问题互动教学过程 分治算法求解棋盘覆盖问题互动教学过程 摘要:针对算法设计与分析课程难度较大.对学生编程能力要求较高的现状,通过对棋盘覆盖问题的分治算法求解过程进行互动教学设计,引 ...

  3. NYOJ 45 棋盘覆盖

    以为是分治法那个经典的例子,一看题才知道是大数 棋盘覆盖 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述 在一个2k×2k(1<=k<=100)的棋盘中恰有一 ...

  4. 棋盘覆盖问题原理及演示程序

    说明:文章内容源自电子工业出版社<计算机算法设计与分析>一书. 演示程序由本人完成,新手请多指教! 在一个2^k * 2^k个方格组成的棋盘中,若恰有一个方格与其它方格不同,则称该方格为一 ...

  5. [算法][递归] 棋盘覆盖

    >_<: 问题描述: 在一个2k×2k 个方格组成的棋盘中,恰有一个方格与其它方格不同,称该方格为一特殊方格,且称该棋盘为一特殊棋盘.在棋盘覆盖问题中,要用图示的4种不同形态的L型骨牌覆盖 ...

  6. JAVA大数_棋盘覆盖

    第一道: 传送门:NYOJ 45 棋盘覆盖 2^k*2^k=4^k,其实就是大数计算,-1后取3的倍数.问题本源出自<计算机算法设计与分析>的棋盘覆盖问题,原始解法是分治法,递推出公式f( ...

  7. java棋盘问题_0x03大数问题(JAVA解决棋盘覆盖,A+B Problem II)

    常见的有棋盘覆盖和A+B问题,这类问题牵扯到的数值都比较大,如果用一般的数值类型,肯定输出不了,所以就要想一个办法,怎么把大数转换一下输出. A+B Problem II 时间限制:3000 ms | ...

  8. 算法设计棋盘覆盖问题c语言,棋盘覆盖问题(用分治法求解)

    // 棋盘覆盖 #include #include int Board[8][8]={0};//定义棋盘并初始化棋盘 void ChessBoard(int tr,int tc,int dr,int ...

  9. NYOJ-45 棋盘覆盖

    棋盘覆盖 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述 在一个2k×2k(1<=k<=100)的棋盘中恰有一方格被覆盖,如图1(k=2时),现用一缺角的2× ...

最新文章

  1. 连接池--在密码修改的影响
  2. Ubuntu 12.04安装NFS server
  3. 迷失lost结局什么意思_沉默的真相结局是什么意思?严良为什么把球送给江阳儿子?...
  4. CSDN下载频道2014年11月4日本-5日常维护公告
  5. BZOJ1925: [Sdoi2010]地精部落
  6. IOError: encoder jpeg not available
  7. Android中service的生命周期
  8. android自动修音,唱吧自动修音app下载-唱吧自动修音 安卓版v8.6.0-PC6安卓网
  9. HTML 5 Canvas 绘制图形图像
  10. 9WinMap 映射
  11. Word重复操作快捷键F4
  12. 蓝牙耳机无法与计算机连接,蓝牙耳机与电脑无法配对、或者连接不上
  13. 分布式算法 Paxos 的直观解释 (TL;DR)
  14. 嵌入式linux界面开发,基于嵌入式Linux平台实现GUI系统的设计方案
  15. ppt怎么制作抖音快手快闪效果的倒计时动画?
  16. us排名2019计算机专业排名,2019 USNews美国大学计算机专业排名
  17. Oracle中获取系统当前时间 和 进行时间间隔操作
  18. 大学本科计算机考试小抄,大学考试允许带小抄 一页开卷学生抄到手酸
  19. Unicode中的UTF-8, UTF-16, UTF-16LE, UTF-16BE编码及转换 | Java基础
  20. 线性代数考研笔记(三)

热门文章

  1. python汽车租赁程序_python数据分析实例:共享单车租用影响因素探索
  2. MPFC++ wrapper by Pavel
  3. PV,V,UV的概念,采集数据
  4. 3d数字孪生项目开发分享
  5. 系列 HTML+JS GAME制作 之 移动消灭-方块
  6. 用 python 绘制玫瑰花
  7. 小米手环6 获取amaztools key(windows版)
  8. PyTorch RuntimeError: size mismatch, m1:
  9. Could not find artifact pom:2.0.0 in public
  10. (win10家庭版)修改C盘Users目录下文件夹名称