ssl1344-Knights【最大独立集,最大匹配,图论】
正题
大意
求在一个扣掉m个格子的n*n的棋盘能放置的最多的马。
解题思路
求最大独立集就好了,最大独立集=点数-最大匹配数。最重要的是如何建图。定义一个数组point[i][j]表示点的编号。但是如果这样的话就会O(n4)O(n4)O(n^4)就会超时。现在我们把棋盘从左到右后从上到下标号,那这样奇数就攻击不到奇数,偶数就攻击不到偶数,然后分两边构图,就可以O(n4/2)O(n4/2)O(n^4/2)。
代码
#include<cstdio>
#include<cstring>
using namespace std;
int one,two,n,m,link[20001],ddx,ddy,w,s,zx[20001],zy[20001],point[201][201];
int tot,dx[8]={1,1,-1,-1,2,2,-2,-2},dy[8]={2,-2,2,-2,1,-1,1,-1};
bool a[201][201],cover[20001];
bool find(int i)//求最大匹配
{
int k=0;
for (int j=0;j<8;j++)
{ if (zx[i]+dx[j]<1 || zy[i]+dy[j]<1 || zx[i]+dx[j]>n || zy[i]+dy[j]>n) continue;
k=point[zx[i]+dx[j]][zy[i]+dy[j]];//记录
if (!a[zx[i]+dx[j]][zy[i]+dy[j]] && !cover[k])
{ int q=link[k];
link[k]=i;
cover[k]=true;
if (!q || find(q)) return true;
link[k]=q;
}
}
return false;
}
int main()
{
scanf("%d%d",&n,&m);
for (int i=1;i<=m;i++)
{
scanf("%d%d",&ddx,&ddy);
a[ddx][ddy]=true;
}
for (int i=1;i<=n;i++)
for (int j=1;j<=n;j++)
{ if (!a[i][j])
{ if ((i+j)%2==0) point[i][j]=++two;//标号
else
{ point[i][j]=++one;//标号
zx[one]=i;//记录坐标
zy[one]=j;
}
}
}
s=0;
for (int i=1;i<=one;i++)
{ memset(cover,0,sizeof(cover));
if (find(i)) s++;//找最大匹配数
}
printf("%d",n*n-m-s);
}
ssl1344-Knights【最大独立集,最大匹配,图论】相关推荐
- ZOJ1654-Place the Robots【最大匹配,图论】
正题 大意 一个n*m个地方,有墙,草地和空地.在空地可以放机器人,机器人会将看到的其他机器人 [河蟹] 掉.他不能隔墙看.求最多能放多少个机器人. 解题思路 这里用一种奇特的构图方法, (盗一下pp ...
- ssl1333-地鼠的困境【二分图,最大匹配,图论】
正题 大意 有n个地鼠有m个地洞,每只地鼠的速度都是v.若不在s秒之内回到地洞就会狗带,每只地洞只能躲一只地鼠,求能活下来多少只 代码 #include<cstdio> #include& ...
- ssl1335-最佳派对【二分图,最大匹配,图论】
正题 题目 有n个中国学生与若干个外国学生,一些中国学生与外国学生之间可以很好的配对,求能配成的最多对数 解题思路 二分图匈牙利算法 代码 #include<cstdio> #includ ...
- 二分图-匈牙利算法模板
二分图就不赘述了,我在知识资料整理有相关资料. .最大匹配 .最小路径覆盖 .最小点覆盖 .最大独立集 最大匹配:二分图中边集最大的那个匹配 最小路径(边)覆盖:用尽量小的不想交简单路径覆盖有向 ...
- [学习笔记] 二分图基础定理的相关证明
最小点集覆盖=最大匹配 最小点集覆盖:选出最少的点使得每条边都至少有一个端点被选. 先证最小点集覆盖 ≥\ge≥ 最大匹配 假设最大匹配为 xxx,即有 xxx 条边两两之间没有公用点. 光覆盖这些边 ...
- 2019暑假牛客第5场-F.maximum clique 1-最大独立集(输出方案)
题面: 思路: 建图方法若两个数有且仅有一个位不同,那么连边(从左边指向右边). 根据某个数的二进制表达式中有奇数个1还是偶数个1,分成左边和右边. 对于二分图,跑匈牙利求最大匹配,最大独立集=节点数 ...
- 最大匹配、最小顶点覆盖、最大独立集、最小路径覆盖(转)
在讲述这两个算法之前,首先有几个概念需要明白: 二分图: 二分图又称二部图,是图论中的一种特殊模型.设G=(V,E)是一个无向图,如果顶点V可以分割为两个互不相交的子集(A,B),并且图中的每条边( ...
- 图论——最大团问题和最大独立集、二分图相关
文章目录 最大团问题和最大独立集 二分图.用网络流解决最大二分匹配的方法 一种另类的增广路--交替路.匈牙利算法 一般图.二分图中的其它性质 P1640 [SCOI2010]连续攻击游戏 最大团问题和 ...
- [图论总结] 最大独立集(例题:Code Names)
[图论总结1] 最大独立集的概念 独立集 匹配 概念之间的关系及性质 例题 最大独立集的概念 独立集 来自oi-wiki 在上面的描述中,V是代表的点集,而E代表的是边集 独立集以及最大独立集均是点的 ...
最新文章
- 【Spring Security】五、自定义过滤器
- 量子位MEET大会正式启动!邀AI企业共同预见智能科技新未来
- 64位百度云 catia v6_逃狱兄弟百度云资源已更新,1080P高清资源分享64
- pip download的使用记录
- Elasticsearch 集群平衡配置
- java项目功能详情介绍,JAVAEE—spring的详细介绍
- 4 SAP权限PFCG操作手册
- 车机没有carlife可以自己下载吗_路咖评:新宝骏的车机系统 革了百度Carlife的命?...
- Ember.js之动态创建模型
- 页面可用性之浏览器默认字体与CSS 中文字体
- 国外大牛开发者创造出Siri第三方服务器
- eclipse窗口设置
- 计算机类专业数学分数,同济大学计算机专业数学分数
- 打开速达服务器出现系统通知,速达7000重装后,启动网络版服务器时会提示程序版本与数据库版本不一致...
- android安卓-子线程计时器TimeCountThread-时分秒-实用功能系列
- 身份证上传尺寸太大如何缩小?改照片尺寸的简单方法
- 【人工智能】2.博弈问题、博弈搜索策略
- UI设计师平时都用什么设计软件工具?
- csma研究背景_以太网CSMA_CD工作原理研究
- IOS App的简单开发实例
热门文章
- 全国计算机考试光盘,全国计算机一级模拟考试题(光盘).doc
- python爬取网页数据软件_python爬虫入门10分钟爬取一个网站
- 四川中级职称计算机考试考b级,四川省职称计算机B级考试1卷
- 禁用笔记本键盘_如何禁用/启用笔记本内置键盘?
- LeetCode 783二叉搜索树节点最小距离-简单
- java8 stream案例分析
- 数据结构与索引-- mysql InnoDB存储引擎索引
- icoding复习6 图
- P4602 [CTSC2018]混合果汁(主席树)
- HDU - 7054 Yiwen with Formula 分治拆位FFT + dp + 费马小定理降幂