BZOJ2744 HEOI2012朋友圈(二分图匹配)
先考虑B国。容易发现a xor b mod 2=0即二进制末位相同,那么可以据此将所有人分成两部分,每一部分各自是一个完全图。然后再将a or b有奇数个1的边连上,现在需要求的就是这样一个图里的最大团。我们知道最大团=反图最大独立集,这个图的反图显然是一个二分图,那么跑二分图匹配就可以求出这个了。
A国同样根据二进制末位分成两部分。显然不可能选择末位相同的两人。于是暴力枚举在A国选择哪些人,只留下B国与其有边的人跑匹配就可以了。
不管复杂度。
在一些非常弱智的地方wa了好长时间,没救。
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstdlib>
#include<cstring>
#include<algorithm>
using namespace std;
int read()
{
int x=,f=;char c=getchar();
while (c<''||c>'') {if (c=='-') f=-;c=getchar();}
while (c>=''&&c<='') x=(x<<)+(x<<)+(c^),c=getchar();
return x*f;
}
#define N 3010
int n,m,k,a[N],b[N],p[N],q[N],tag[N],match[N],t,ans,tot,cnt;
bool flag[N][N],f[N][N];
struct data{int to,nxt;
}edge[N*N];
void addedge(int x,int y){t++;edge[t].to=y,edge[t].nxt=p[x],p[x]=t;}
bool hungary(int k,int from)
{
for (int i=p[k];i;i=edge[i].nxt)
if (tag[edge[i].to]!=from)
{
tag[edge[i].to]=from;
if (!match[edge[i].to]||hungary(match[edge[i].to],from))
{
match[edge[i].to]=k;
return ;
}
}
return ;
}
void pre()
{
memset(p,,m+<<);
memset(match,,m+<<);
memset(tag,,m+<<);
tot=;t=;cnt=;
}
void solve()
{
for (int j=;j<=cnt;j++)
for (int k=;k<=cnt;k++)
if (f[q[j]][q[k]]) addedge(q[j],q[k]);
for (int j=;j<=cnt;j++)
if (b[q[j]]&) tot+=hungary(q[j],q[j]);
}
int main()
{
#ifndef ONLINE_JUDGE
freopen("bzoj2744.in","r",stdin);
freopen("bzoj2744.out","w",stdout);
const char LL[]="%I64d\n";
#else
const char LL[]="%lld\n";
#endif
n=read(),m=read(),k=read();
for (int i=;i<=n;i++) a[i]=read();
for (int i=;i<=m;i++) b[i]=read();
for (int i=;i<=k;i++)
{
int x=read(),y=read();
flag[x][y]=;
}
for (int i=;i<=m;i++)
for (int j=;j<=m;j++)
if ((b[i]&)&&!(b[j]&))
{
int x=b[i]|b[j],y=;
while (x) y^=,x-=x&-x;
if (!y) f[i][j]=,addedge(i,j);
}
for (int i=;i<=m;i++)
if (b[i]&) tot+=hungary(i,i);
ans=m-tot;
for (int i=;i<=n;i++)
{
pre();
for (int j=;j<=m;j++)
if (flag[i][j]) q[++cnt]=j;
solve();
ans=max(ans,cnt-tot+);
}
for (int x=;x<n;x++)
for (int y=x+;y<=n;y++)
if ((a[x]^a[y])&)
{
pre();
for (int j=;j<=m;j++)
if (flag[x][j]&&flag[y][j]) q[++cnt]=j;
solve();
ans=max(ans,cnt-tot+);
}
cout<<ans;
return ;
}
BZOJ2744 HEOI2012朋友圈(二分图匹配)的更多相关文章
- bzoj2744 [HEOI2012]朋友圈——二分图匹配
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2744 首先,求一个图的最大团等价于求它的补图的最大独立集,而二分图的最大独立集 = 总点数 ...
- bzoj 2744: [HEOI2012]朋友圈 二分图匹配
2744: [HEOI2012]朋友圈 Time Limit: 30 Sec Memory Limit: 128 MBSubmit: 612 Solved: 174[Submit][Status] ...
- BZOJ2744:[HEOI2012]朋友圈(最大团,乱搞)
Description 在很久很久以前,曾经有两个国家和睦相处,无忧无虑的生活着.一年一度的评比大会开始了,作为和平的两国,一个朋友圈数量最多的永远都是最值得他人的尊敬,所以现在就是需要你求朋友圈的最 ...
- BZOJ2744: [HEOI2012]朋友圈
题目:http://www.lydsy.com/JudgeOnline/problem.php?id=2744 最大团是一个np问题.. 对于本题,做它的逆问题,建反图做最大独立集. 对于A最多取出两 ...
- 【BZOJ 2744】 2744: [HEOI2012]朋友圈 (最大团,二分图匹配,构图)
2744: [HEOI2012]朋友圈 Description 在很久很久以前,曾经有两个国家和睦相处,无忧无虑的生活着.一年一度的评比大会开始了,作为和平的两国,一个朋友圈数量最多的永远都是最值得他 ...
- 【二分图】HEOI2012 朋友圈
题目内容 洛谷链接 在很久很久以前,曾经有两个国家和睦相处,无忧无虑的生活着. 一年一度的评比大会开始了,作为和平的两国,一个朋友圈数量最多的永远都是最值得他人的尊敬,所以现在就是需要你求朋友圈的最大 ...
- 【BZOJ 2744 】[HEOI2012]朋友圈
Description 在很久很久以前,曾经有两个国家和睦相处,无忧无虑的生活着.一年一度的评比大会开始了,作为和平的两国,一个朋友圈数量最多的永远都是最值得他人的尊敬,所以现在就是需要你求朋友圈的最 ...
- 【刷题】BZOJ 2744 [HEOI2012]朋友圈
Description 在很久很久以前,曾经有两个国家和睦相处,无忧无虑的生活着.一年一度的评比大会开始了,作为和平的两国,一个朋友圈数量最多的永远都是最值得他人的尊敬,所以现在就是需要你求朋友圈的最 ...
- luogu P2423 [HEOI2012]朋友圈 (最大团)
在很久很久以前,曾经有两个国家和睦相处,无忧无虑的生活着. 一年一度的评比大会开始了,作为和平的两国,一个朋友圈数量最多的永远都是最值得他人的尊敬,所以现在就是需要你求朋友圈的最大数目.两个国家看成是 ...
随机推荐
- 学习C#(一)
赶紧好好学学自己的C#,,要不然要给做的东西说拜拜了,,,时间紧迫,,,真担心会食言..................... 在C#中以为只要类有构造方法,,,,原来结构也有 using Syste ...
- day07--字符编码、文件处理
今日内容: 字符编码 文件处理 字符编码: 把字符编码成二进制 各个国家拥有各自的字符编码,这样会导致交流产生问题.所以后面推出了内存使用unicode,硬盘使用UTF-8这个模式 unicode有两 ...
- MVC 如何在action中获取当前网站的根路径
如果基于MVC搭建的网站在IIS发布的是一个单独的端口,那么可以直接通过后面语句获得跟路径:Request.Url.GetLeftPart(UriPartial.Authority).ToString ...
- iOS Swift WisdomScanKit二维码扫码SDK,自定义全屏拍照SDK,系统相册图片浏览,编辑SDK
iOS Swift WisdomScanKit 是一款强大的集二维码扫码,自定义全屏拍照,系统相册图片编辑多选和系统相册图片浏览功能于一身的 Framework SDK [1]前言: 今天给大家 ...
- Exp2 MAL_后门原理与实践 20155214
目录 Exp2 MAL_后门原理与实践 实验内容 通过nc反向连接创建后门 meterpreter应用 主要思路 知识点 启发 Exp2 MAL_后门原理与实践 本次实验操使用nc实现win,mac, ...
- # 2017-2018-2 20155319『网络对抗技术』Exp2:后门原理与实践
2017-2018-2 20155319『网络对抗技术』Exp2:后门原理与实践 1.实验准备 一.实验说明 任务一:使用netcat获取主机操作Shell,cron启动 (0.5分) 任务二:使用s ...
- EZ 2018 01 14 2018noip第四次膜你赛
这次惨烈的炸了个精光(只有20),然后对我的OI想法造成了巨大的转折. (以上有点作,其实我只是再也不用vector存图了而已(用邻接表)) 难度很不均匀,而且题型很狗(还有结论题???) T1 坑人 ...
- FormData 数据转化为 json 数据
两种方法 <!-- 实例:将 FormData 转化为 json --> <meta charset="utf-8"/> <form enctype= ...
- Google是如何教会机器玩Atari游戏的
转自:http://blog.csdn.net/revolver/article/details/50177219 今年上半年(2015年2月),Google在Nature上发表了一篇论文:Human ...
- jQuery .attr() vs. .prop()
Property vs. Attribute 在开始正式比较prop()和attr()两个jQuery方法之前,我们有必要先弄清一下Property和Attribute两个单词的意思.在中文里面,它们 ...