#include<cstdio>
#include<iostream>
#define M 3010
using namespace std;
int A,B,m,a[M],b[M],map[M][M],head[M],next[M*M>>],u[M*M>>],cnt,ans,f1,f2,ban[M],f[M],k[M],pi[M];
int ji(int a1)
{
int sum=;
for(;a1;)
{
a1-=a1&-a1;
sum++;
}
return sum;
}
void jia(int a1,int a2)
{
cnt++;
next[cnt]=head[a1];
head[a1]=cnt;
u[cnt]=a2;
return;
}
bool xun(int a1)
{
for(int i=head[a1];i;i=next[i])
if(ban[u[i]]<f1&&f[u[i]]<f2)
{
f[u[i]]=f2;
if(k[u[i]]<f1||!pi[u[i]]||xun(pi[u[i]]))
{
k[u[i]]=f1;
pi[u[i]]=a1;
return ;
}
}
return ;
}
int make(int x=,int y=)
{
int re=;
f1++;
for(int i=;i<=B;i++)
if(!map[x][i]||!map[y][i])
{
ban[i]=f1;
re++;
}
for(int i=;i<=B;i++)
if(b[i]&&&ban[i]<f1)
{
f2++;
if(xun(i))
re++;
}
return B-re;
}
int main()
{
scanf("%d%d%d",&A,&B,&m);
for(int i=;i<=A;i++)
scanf("%d",&a[i]);
for(int i=;i<=B;i++)
scanf("%d",&b[i]);
for(int i=;i<=m;i++)
{
int a1,a2;
scanf("%d%d",&a1,&a2);
map[a1][a2]=;
}
for(int i=;i<=B;i++)
map[][i]=;
for(int i=;i<=B;i++)
if(b[i]&)
for(int j=;j<=B;j++)
if(~b[j]&)
if(~ji(b[i]|b[j])&)
jia(i,j);
ans=make();
for(int i=;i<=A;i++)
ans=max(make(i)+,ans);
for(int i=;i<=A;i++)
if(a[i]&)
for(int j=;j<=A;j++)
if(~a[j]&)
ans=max(make(i,j)+,ans);
printf("%d\n",ans);
return ;
}

由题A国只能取两个,一奇一偶。求最大团,最大团=补图最大独立子集。B国补图是一个二分图。枚举A国的点,在B国上跑最大独立子集=节点数-最大匹配数。

bzoj 2744: [HEOI2012]朋友圈的更多相关文章

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

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

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

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

  3. bzoj 2744 [HEOI2012]朋友圈——补图!+匈牙利算法

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2744 求最大的团<==>补图(有边的变成没边.没边的变成有边)的最大独立集! A ...

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

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

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

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

  6. BZOJ2744:[HEOI2012]朋友圈(最大团,乱搞)

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

  7. luogu P2423 [HEOI2012]朋友圈 (最大团)

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

  8. 【二分图】HEOI2012 朋友圈

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

  9. BZOJ2744: [HEOI2012]朋友圈

    题目:http://www.lydsy.com/JudgeOnline/problem.php?id=2744 最大团是一个np问题.. 对于本题,做它的逆问题,建反图做最大独立集. 对于A最多取出两 ...

随机推荐

  1. 加载.properties方式

    相对路径时注意:是相对项目(即包下)还是相对当前类(一般都是相对当前项目)(对于非class的资源文件eclipse编译时会直接放到bin目录下) 1.一般是从目录中加载:需要指明路径 2.另外就是通 ...

  2. JdbcTemplate操作数据库

    1.JdbcTemplate操作数据库 Spring对数据库的操作在jdbc上面做了深层次的封装,使用spring的注入功能,可以把DataSource注册到JdbcTemplate之中.同时,为了支 ...

  3. asp.net 柱形图

    在vs中,如果要使用柱形图,我们大多数使用第三方提供的插件,所以必须要引用样式,这里我使用的是Highcharts-4.1.9插件,百度一下就可以下载到. 关键的js代码: <script sr ...

  4. 关于Socket的经验小结

    前言 IM通信在互联网发展到现在已经是码农的世界里人尽皆知的技术,特别在当下移动互联网迅猛发展的时代这种技术的开发也更加火热,其中老牌的代表作就有QQ和MSN,和最近新崛起的微信,默默,易信,来往等眼 ...

  5. iOS开发之语音功能实现

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launc ...

  6. Android:控件WebView显示网页

    WebView可以使得网页轻松的内嵌到app里,还可以直接跟js相互调用. webview有两个方法:setWebChromeClient 和 setWebClient setWebClient:主要 ...

  7. 转:Eric Lippert:阅读代码真的很难

    转自:http://blog.jobbole.com/438/ 相关文章 微软资深软件工程师:阅读代码真的很难(第2篇) 阅读优秀代码是提高开发人员修为的一种捷径 学会阅读源代码 如何阅读大型代码库? ...

  8. Sqlserver_时间用法

    函数 描述 GETDATE() 返回当前的日期和时间 DATEPART() 返回日期/时间的单独部分 DATEADD() 在日期中添加或减去指定的时间间隔 DATEDIFF() 返回两个日期之间的时间 ...

  9. css编码规范

    css编码规范 https://segmentfault.com/a/1190000002460968 常用样式测试工具 W3C CSS validator:http://jigsaw.w3.org/ ...

  10. AD组策略添加本地账号、设置允许ping回显

    AD组策略添加本地账号 1. 管理工具--组策略管理--选择相应GPO(编辑)----首选项--控制面板设置--本地用户和组--右键添加账号 2.域成员计算机刷新组策略(gpupdate/force) ...