TYVJ p1035 棋盘覆盖
描述 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 棋盘覆盖相关推荐
- 递归与分治之棋盘覆盖问题
在一个2^k * 2^k个方格组成的棋盘中,若有一个方格与其他方格不同,则称该方格为一特殊方格,且称该棋盘为一个特殊棋盘. 显然特殊方格在棋盘上出现的位置有4^k种情形.因而对任何k≥0,有4^k种不 ...
- 计算机基础算法棋盘覆盖,分治算法求解棋盘覆盖问题互动教学过程.doc
分治算法求解棋盘覆盖问题互动教学过程 分治算法求解棋盘覆盖问题互动教学过程 摘要:针对算法设计与分析课程难度较大.对学生编程能力要求较高的现状,通过对棋盘覆盖问题的分治算法求解过程进行互动教学设计,引 ...
- NYOJ 45 棋盘覆盖
以为是分治法那个经典的例子,一看题才知道是大数 棋盘覆盖 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 在一个2k×2k(1<=k<=100)的棋盘中恰有一 ...
- 棋盘覆盖问题原理及演示程序
说明:文章内容源自电子工业出版社<计算机算法设计与分析>一书. 演示程序由本人完成,新手请多指教! 在一个2^k * 2^k个方格组成的棋盘中,若恰有一个方格与其它方格不同,则称该方格为一 ...
- [算法][递归] 棋盘覆盖
>_<: 问题描述: 在一个2k×2k 个方格组成的棋盘中,恰有一个方格与其它方格不同,称该方格为一特殊方格,且称该棋盘为一特殊棋盘.在棋盘覆盖问题中,要用图示的4种不同形态的L型骨牌覆盖 ...
- JAVA大数_棋盘覆盖
第一道: 传送门:NYOJ 45 棋盘覆盖 2^k*2^k=4^k,其实就是大数计算,-1后取3的倍数.问题本源出自<计算机算法设计与分析>的棋盘覆盖问题,原始解法是分治法,递推出公式f( ...
- java棋盘问题_0x03大数问题(JAVA解决棋盘覆盖,A+B Problem II)
常见的有棋盘覆盖和A+B问题,这类问题牵扯到的数值都比较大,如果用一般的数值类型,肯定输出不了,所以就要想一个办法,怎么把大数转换一下输出. A+B Problem II 时间限制:3000 ms | ...
- 算法设计棋盘覆盖问题c语言,棋盘覆盖问题(用分治法求解)
// 棋盘覆盖 #include #include int Board[8][8]={0};//定义棋盘并初始化棋盘 void ChessBoard(int tr,int tc,int dr,int ...
- NYOJ-45 棋盘覆盖
棋盘覆盖 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 在一个2k×2k(1<=k<=100)的棋盘中恰有一方格被覆盖,如图1(k=2时),现用一缺角的2× ...
最新文章
- 连接池--在密码修改的影响
- Ubuntu 12.04安装NFS server
- 迷失lost结局什么意思_沉默的真相结局是什么意思?严良为什么把球送给江阳儿子?...
- CSDN下载频道2014年11月4日本-5日常维护公告
- BZOJ1925: [Sdoi2010]地精部落
- IOError: encoder jpeg not available
- Android中service的生命周期
- android自动修音,唱吧自动修音app下载-唱吧自动修音 安卓版v8.6.0-PC6安卓网
- HTML 5 Canvas 绘制图形图像
- 9WinMap 映射
- Word重复操作快捷键F4
- 蓝牙耳机无法与计算机连接,蓝牙耳机与电脑无法配对、或者连接不上
- 分布式算法 Paxos 的直观解释 (TL;DR)
- 嵌入式linux界面开发,基于嵌入式Linux平台实现GUI系统的设计方案
- ppt怎么制作抖音快手快闪效果的倒计时动画?
- us排名2019计算机专业排名,2019 USNews美国大学计算机专业排名
- Oracle中获取系统当前时间 和 进行时间间隔操作
- 大学本科计算机考试小抄,大学考试允许带小抄 一页开卷学生抄到手酸
- Unicode中的UTF-8, UTF-16, UTF-16LE, UTF-16BE编码及转换 | Java基础
- 线性代数考研笔记(三)
热门文章
- python汽车租赁程序_python数据分析实例:共享单车租用影响因素探索
- MPFC++ wrapper by Pavel
- PV,V,UV的概念,采集数据
- 3d数字孪生项目开发分享
- 系列 HTML+JS GAME制作 之 移动消灭-方块
- 用 python 绘制玫瑰花
- 小米手环6 获取amaztools key(windows版)
- PyTorch RuntimeError: size mismatch, m1:
- Could not find artifact pom:2.0.0 in public
- (win10家庭版)修改C盘Users目录下文件夹名称