Time Limit: 30 Sec  Memory Limit: 128 MB
Submit: 1570  Solved: 532
[
Submit][Status][Discuss]

Description

在很久很久以前,曾经有两个国家和睦相处,无忧无虑的生活着。一年一度的评比大会开始了,作为和平的两国,一个朋友圈数量最多的永远都是最值得他人的尊敬,所以现在就是需要你求朋友圈的最大数目。

两个国家看成是AB两国,现在是两个国家的描述:

1. A国:每个人都有一个友善值,当两个A国人的友善值a、b,如果a xor b mod 2=1,

那么这两个人都是朋友,否则不是;

2. B国:每个人都有一个友善值,当两个B国人的友善值a、b,如果a xor b mod 2=0

或者 (a or b)化成二进制有奇数个1,那么两个人是朋友,否则不是朋友;

3. A、B两国之间的人也有可能是朋友,数据中将会给出A、B之间“朋友”的情况。

4. 在AB两国,朋友圈的定义:一个朋友圈集合S,满足

S∈A∪ B ,对于所有的i,j∈ S ,i 和 j 是朋友

由于落后的古代,没有电脑这个也就成了每年最大的难题,而你能帮他们求出最大朋 友圈的人数吗?

Input

第一行t<=6,表示输入数据总数。

接下来t个数据:

第一行输入三个整数A,B,M,表示A国人数、B国人数、AB两国之间是朋友的对数;第二行A个数ai,表示A国第i个人的友善值;第三行B个数bi,表示B国第j个人的友善值;

第4——3+M行,每行两个整数(i,j),表示第i个A国人和第j个B国人是朋友。

Output

输出t行,每行,输出一个整数,表示最大朋友圈的数目。

Sample Input

2 4 7
1 2
2 6 5 4
1 1
1 2
1 3
2 1
2 2
2 3
2 4

Sample Output

5
【样例说明】
最大朋友圈包含A国第1、2人和B国第1、2、3人。

HINT

【数据范围】
两类数据
第一类:|A|<=200 |B| <= 200
第二类:|A| <= 10 |B| <= 3000

【题解】

     ①题目是求最大团,但是直接弄很麻烦。

     ②观察题目性质,A图是一个二分图,B图很混乱,因此考虑反图:

     ③A图的反图是两个完全图,B图反图是二分图。求反图的最大独立集就是原图的最大团。

     ④记得反转AB之间的边。有变无无变有。

     ⑤进行二分图匹配,不过先强制匹配AB之间的边,这样可以保证剩下的点为二分图

#include<stdio.h>
#include<algorithm>
#define go(i,a,b) for(int i=a;i<=b;i++)
#define fo(i,a,x) for(int i=a[x],v=e[i].v;i;i=e[i].next,v=e[i].v)
const int N=3308;bool Pal[N][N];struct E{int v,next;}e[N*N];
int C,T1,T2,A,B,M,a[N],n,head[N],k=1,c[N],vis[N],cover[N],ans;
void ADD(int u,int v){e[k]=(E){v,head[u]};head[u]=k++;}
bool isEven(int x){int sum=0;while(x)sum++,x-=x&-x;return (sum&1)==0;} int AUG(int u)
{
if(cover[u]==T1)return 0;
fo(i,head,u)if(vis[v]!=T2&&cover[v]!=T1){
vis[v]=T2;if(!c[v]||AUG(c[v])){c[v]=u;return 1;}}return 0;
} int main()
{
scanf("%d%d%d",&A,&B,&M);n=A+B;
go(i,1,n)scanf("%d",a+i);
go(i,1,M){int u,v;scanf("%d%d",&u,&v);Pal[u][v+A]=Pal[v+A][u]=1;}
go(i,A+1,n)if(a[i]&1)go(j,A+1,n)if(!(a[j]&1))
if(isEven(a[i]|a[j]))ADD(i,j),ADD(j,i); go(x,0,A)if(a[x]&1||x==0)
go(y,0,A)if(!(a[y]&1)||y==0)
{
T1++;int cnt=0;go(i,A+1,n)c[i]=0;
if(x)go(i,A+1,n)if(!Pal[i][x])cnt+=(cover[i]!=T1),cover[i]=T1;
if(y)go(i,A+1,n)if(!Pal[i][y])cnt+=(cover[i]!=T1),cover[i]=T1;
go(i,A+1,n)if(a[i]&1)T2++,cnt+=AUG(i);ans=std::max(ans,B+(x>0)+(y>0)-cnt);
}
printf("%d\n",ans);return 0;
}//Paul_Guderian

.

【BZOJ 2744 朋友圈】的更多相关文章

  1. BZOJ - 2744 朋友圈 (二分图上的最大团)

    [题目大意] 在很久很久以前,曾经有两个国家和睦相处,无忧无虑的生活着.一年一度的评比大会开始了,作为和平的两国,一个朋友圈数量最多的永远都是最值得他人的尊敬,所以现在就是需要你求朋友圈的最大数目.两 ...

  2. bzoj 2744 朋友圈

    题目大意: 两个国家 各有A和B个人,每个人有一个数值. 若两个A国的人满足$val_i\space xor \space val_j \mod 2 =1$ 则他们为朋友 若两个B国的人满足$val_ ...

  3. bzoj 2744: [HEOI2012]朋友圈 二分图匹配

    2744: [HEOI2012]朋友圈 Time Limit: 30 Sec  Memory Limit: 128 MBSubmit: 612  Solved: 174[Submit][Status] ...

  4. 【BZOJ 2744】 2744: [HEOI2012]朋友圈 (最大团,二分图匹配,构图)

    2744: [HEOI2012]朋友圈 Description 在很久很久以前,曾经有两个国家和睦相处,无忧无虑的生活着.一年一度的评比大会开始了,作为和平的两国,一个朋友圈数量最多的永远都是最值得他 ...

  5. 【BZOJ 2744 】[HEOI2012]朋友圈

    Description 在很久很久以前,曾经有两个国家和睦相处,无忧无虑的生活着.一年一度的评比大会开始了,作为和平的两国,一个朋友圈数量最多的永远都是最值得他人的尊敬,所以现在就是需要你求朋友圈的最 ...

  6. 【刷题】BZOJ 2744 [HEOI2012]朋友圈

    Description 在很久很久以前,曾经有两个国家和睦相处,无忧无虑的生活着.一年一度的评比大会开始了,作为和平的两国,一个朋友圈数量最多的永远都是最值得他人的尊敬,所以现在就是需要你求朋友圈的最 ...

  7. QQ空间/朋友圈类界面的搭建

    类似于QQ空间的布局主要是在说说信息.点赞.回复三大部分的自适应布局上. 当我们需要搭建类似QQ空间.微信朋友圈的界面的时候,可做如下操作: 创建一个对应的model类: 创建一个对应model类的f ...

  8. Python微信-- 分享接口(分享到朋友圈、朋友、空间)

    生成JS-SDK权限验证的签名 获取signature(签名)首先要获得 1.#获得jsapi_ticket 2.#获取当前页面的url #获取当前页面的url url="{}://{}{} ...

  9. Apple Watch版微信来了 收发微信刷朋友圈不在话下

    昨晚果粉守了一夜的Apple Watch发布会,意料中的惊喜不少,最让人兴奋的是微信成为首批支持的应用.是的,在全球拥有4.68亿月活跃用户的微信怎么可能不第一时间入驻呢?之前我们就有聊过Apple ...

随机推荐

  1. 一个好用的C# HttpCookieHelper.cs类

    using System; using System.Collections.Generic; using System.Text; using System.Text.RegularExpressi ...

  2. Discuz论坛搜索下拉框插件openSug

    Discuz!只需安装openSug插件即可获得带有“搜索框提示”功能的搜索框,让您的Discuz搜索更便捷! 下载:https://www.opensug.org/faq/.../opensug.d ...

  3. php Trait的使用

    1.php中的trait是啥? 看上去既像类又像接口,其实都不是,Trait可以看做类的部分实现,可以混入一个或多个现有的PHP类中,其作用有两个:表明类可以做什么:提供模块化实现.Trait是一种代 ...

  4. Hadoop==zookeeper

    Zookeeper 每一个专业的技术总可以在生活中找到相应的实例,就比如说zookeeper,攘其外必先安其内就很好的解释了zookeeper,Hadoop集群的组件中的很多在学习的时候都会觉得每一个 ...

  5. 【Thrift一】Thrift安装部署

    Thrift安装部署 Thrift安装部署 下载源码包 安装g++ 解压Thrift安装包 安装boost开发工具 测试(python版) 下载源码包 wget http://apache.fayea ...

  6. ecshop 全系列版本网站漏洞 远程代码执行sql注入漏洞

    ecshop漏洞于2018年9月12日被某安全组织披露爆出,该漏洞受影响范围较广,ecshop2.73版本以及目前最新的3.0.3.6.4.0版本都受此次ecshop漏洞的影响,主要漏洞是利用远程代码 ...

  7. My First Marathon【我的第一次马拉松】

    My First Marathon A month before my first matathon, one of my ankles was injured and this meant not ...

  8. MVC4+EF 列表数据不能绑定

    最新准备使用.net 的mvc+Ef来写个项目,开始一切顺利,到了数据绑定时出现了问题. 我的mvc视图引擎是Razor,后台提取数据的是Linq来处理,发现不管怎么样都不能绑定列表数据,可以将后台的 ...

  9. DDL失败案例

    问题描述 今天对线上某个业务的大表120G进行重建表操作时遇到报错,该表有个比较显著的特征是*写入量比较大,每天写入加更新的频率在数千万级别.大致的环境 1 版本:Percona 5.6.24 2 操 ...

  10. HTML布局的元素

    header 定义文档或节的页眉 nav 定义导航链接的容器 section 定义文档中的节 article 定义独立的自包含文章 aside 定义内容之外的内容(比如侧栏) footer 定义文档或 ...