TYVJ-P1035 棋盘覆盖
发布日期:2021-06-30 16:05:04
浏览次数:2
分类:技术文章
本文共 1633 字,大约阅读时间需要 5 分钟。
我们选择33的网格进行讨论 有没有发现,因为每个点只能掩盖一次,所以题目要求的就是一个二分图最大匹配对数,因为要选择12的多米诺骨牌进行掩盖,不就是选择两个格子吗?这样的话,题目不就是要选择最多的这样的两个格子进行掩盖吗?这样的?什么样子的两个格子呢?当然是上下左右相临的啊,所以建图就不难了吧。
代码:
#include#include using namespace std;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;}
转载地址:https://kaven.blog.csdn.net/article/details/77919181 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
留言是一种美德,欢迎回访!
[***.207.175.100]2024年04月10日 17时33分27秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
九度OJ 1005
2019-05-01
九度OJ 1008
2019-05-01
九度OJ 1009
2019-05-01
记录使用ubuntu的一些经历
2019-05-01
vs2010将杂乱的代码格式化
2019-05-01
栈溢出攻击的理解
2019-05-01
进程注入学习
2019-05-01
函数名、变量前后的_(一个下划线)、__(两个下划线)分别有什么用
2019-05-01
C++实现龙贝格计算积分
2019-05-01
通过分析一个C程序的汇编指令执行过程,理解计算机的工作。
2019-05-01
从一个精简Linux内核分析操作系统的基本运行过程
2019-05-01
分析Linux内核启动过程:从start_kernel到init
2019-05-01
系统调用过程的理解
2019-05-01
LeetCode 96 Unique Binary Search Trees 解题报告
2019-05-01
LeetCode 136 Single Number解题报告
2019-05-01
LeetCode 137 Single Number II 解题报告
2019-05-01
LeetCode 62 Unique Paths 解题报告
2019-05-01
跟踪sys_mkdir的系统调用过程
2019-05-01