Code Names
Code Names
题意:
如果一个字符串通过交换两个位置可以得到另一个字符串(也就是两个字符串只有两个位置不一样且为交换关系),我们称这两个字符串为替代关系。
现在给出n个字符串,求一个集合,使得集合内的字符串均不是交换关系,且使得这个集合最大
题解:
现在给每个字符串一个编号
如果两个字符串i和j成替代关系,我们就从i到j连一条线
这样将n个字符串互相连线,我们就得到一个图,接下来该怎么办?
我们知道连线的字符串是不能在一个集合里的
我们将左右侧都为n个字符串,根据关系连线,得到下图(紫色线)
这是个二分图,我们在这个二分图上跑最大二分匹配即可,跑出来的结果m就是不能匹配的数量,最大独立集数就是n − m,
(注意,我们一开始令ans=n*2,让ans减去m,最后除以2是答案)
补充一些关系:
独立集:图中两点不相邻就是图的一个独立集
最大独立集 = n - 最大匹配
最大匹配 = 最小点覆盖
最大独立集 = n - 最小点覆盖
最大团 = 补图的最大独立集
最大独立集 = 补图的最大团
代码:
#include<bits/stdc++.h>
typedef long long ll;
using namespace std;
inline int read(){int s=0,w=1;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')w=-1;ch=getchar();}while(ch>='0'&&ch<='9') s=s*10+ch-'0',ch=getchar();//s=(s<<3)+(s<<1)+(ch^48);return s*w;
}
const int maxn=6e2+9;
string a[maxn];
int ans=0;
bool vis[maxn];
int edge[maxn][maxn];
int fa[maxn];
int n;
bool find(int x){if(vis[x])return 0;vis[x]=1;for(int i=1;i<=n;i++){if(edge[x][i]){if(fa[i]==0||find(fa[i])){fa[i]=x;return 1;}}} return 0;
}
int main()
{cin>>n;for(int i=1;i<=n;i++){cin>>a[i];}int len=a[1].length();for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){int num=0;for(int k=0;k<len;k++){if(a[i][k]!=a[j][k])num++;}if(num==2)edge[i][j]=1;}}ans=n*2;for(int i=1;i<=n;i++){memset(vis,0,sizeof(vis));ans-=find(i); }cout<<ans/2;
}
Code Names相关推荐
- [图论总结] 最大独立集(例题:Code Names)
[图论总结1] 最大独立集的概念 独立集 匹配 概念之间的关系及性质 例题 最大独立集的概念 独立集 来自oi-wiki 在上面的描述中,V是代表的点集,而E代表的是边集 独立集以及最大独立集均是点的 ...
- hdu 5099 Comparison of Android versions 枚举题意
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5099 卡读题,实际上题目中表述的题意并不完整,所以要认真读并且加上一些现实的"常识" ...
- 《利用python进行数据分析》读书笔记--第八章 绘图和可视化
python有许多可视化工具,本书主要讲解matplotlib.matplotlib是用于创建出版质量图表的桌面绘图包(主要是2D方面).matplotlib的目的是为了构建一个MATLAB式的绘图接 ...
- jQuery避免$符和其他JS库冲突的方法对比
jQuery避免$符和其他JS库冲突的方法对比 1.如果jquery库在第三方库之后引用.这个时候jquery库会占用$. 解决办法:剔除$符号的使用权. <script type=" ...
- CISC-235 Fall 2018 Assignment
代写CISC-235作业.代做Python/Java编程作业.代写C/C++课程设计作业.代做HOTNCU留学生作业 CISC-235 Fall 2018 Assignment 2 A certain ...
- Android Platform Codenames, Versions, API Levels, and NDK Releases
The code names match the following version numbers, along with API levels and NDK releases provided ...
- php科学计算库,科学计算库numpy基础
numpy numpy的核心数据结构是ndarray,可以创建N维数组 ndarray的特点 ndarray(N-dimensional array):N维数组 一种由相同类型的元素组成的多维数组,元 ...
- Jozky 刷题目录
文章目录 本目录参考OI-Wiki 还未解决专区 算法基础 枚举 模拟 递归&分治 贪心 排序 前缀和&差分 二分 倍增 构造 搜索 DFS && BFS 双向搜索 启 ...
- 安卓源码 代号,标签和内部版本号
Setup Security Porting Tuning Compatibility Reference 转到源代码 Getting Started Overview Codelines, Bran ...
最新文章
- AC日记——中庸之道 codevs 2021
- BP神经网络分类2*2对角矩阵准确率数据汇总
- Push代码:Git@github.com: Permission denied (publickey)
- 微信小程序之scroll-view-导航栏左右滑动
- springboot quartz动态任务处理
- Linux系统运维之路
- 我为什么选择Angular 2?
- Ubuntu16.04安装Hadoop+Spark+pyspark大数据python开发环境
- php 上传加水印,PHP 图片上传加水印实例
- php cli运行获取参数,php cli传递参数的方法
- 3Ds MAX 百度网盘免费下载
- AWS Lambda重大更新,跨越编程语言差异之门?
- android高德地图语音,高德地图导航组件没有导航语音声音
- 移动端Touch (触摸)事件
- 买入高价显卡的回血方法
- 几个IDS开源系统介绍
- 新手小白适合做哪个跨境电商平台?测评自养号能带来哪些收益及优势?
- 尼尔机械纪元游乐园怎么去机器人村_尼尔机械纪元图文攻略 系统教程+全任务剧情流程...
- android xml绘图p113-p117
- 我最喜欢的一位女明星哦!
热门文章
- 程序员没有女朋友的原因,我终于找到了!
- 当代大学查寝奇葩操作大赏 | 今日最佳
- 2018年,该转行AI工程师吗?
- 与ln的指数转化公式_高考数学48条秒杀型公式与方法
- oracle绑定变量过多,oracle - 在SQL Plus中使用绑定变量并返回多行? - 堆栈内存溢出...
- 通达信版弘历软件指标_通达信软件指标编写基础教程,10个指标源码祝你股市一帆风顺...
- php mysql explain_MySQL Explain详解
- python中闭包不是立刻执行_一道神奇的Python面试题,你会吗?
- 数据结构——图-迪杰斯特拉算法
- mysql innodb log_教你如何理解mysql中的innoDB log