【最大团转最大点独立集(匈牙利算法+时间戳优化)】BZOJ2744-[HEOI2012]朋友圈
【题目大意】
有两个国家A和B。存在以下朋友关系:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<vector>
using namespace std;
const int MAXA=+;
const int MAXB=+;
int na,nb,m;
int a[MAXA],b[MAXB];
bool map[MAXA][MAXB];
vector<int> E[MAXB];
int T1=,T2=,ban[MAXB],tim[MAXB],vis[MAXB],lk[MAXB]; void addedge(int u,int v)
{
E[u].push_back(v);
} int count(int x)
{
int re=;
while (x)
{
re+=x&;
x>>=;
}
return re;
} int find(int x)
{
if (ban[x]==T1)
return ;
for (int i=;i<E[x].size();i++)
{
int to=E[x][i];
if ((ban[to]!=T1) && (vis[to]!=T2))
{
vis[to]=T2;
if (tim[to]!=T1 || !lk[to] || find(lk[to]))
{
tim[to]=T1;
lk[to]=x;
return ;
}
}
}
return ;
} int mis(int x=,int y=)
{
++T1;
int ret=;
for (int i=;i<=nb;i++)
if (map[x][i] || map[y][i]) ban[i]=T1,++ret;
for (int i=;i<=nb;i++)
if (!(b[i]&))
{
++T2;
if (find(i)) ++ret;
}
return (nb-ret);
} void init()
{
memset(map,,sizeof(map));
scanf("%d%d%d",&na,&nb,&m);
for (int i=;i<=na;i++) scanf("%d",&a[i]);
for (int i=;i<=nb;i++) scanf("%d",&b[i]);
for (int i=;i<m;i++)
{
int x,y;
scanf("%d%d",&x,&y);
map[x][y]=;
}
} void solve()
{
for (int i=;i<=nb;i++)
if (!(b[i]&))
for (int j=;j<=nb;j++)
if (b[j]&)
if (!(count(b[i]|b[j])&))
addedge(i,j);
for (int i=;i<=nb;i++) map[][i]=;
int ans=mis();
for (int i=;i<=na;i++)
ans=max(ans,mis(i)+);
for (int i=;i<=na;i++)
if (a[i]&)
for (int j=;j<=na;j++)
if (!(a[j]&))
ans=max(ans,mis(i,j)+);
printf("%d",ans);
} int main()
{
init();
solve();
return ;
}
【最大团转最大点独立集(匈牙利算法+时间戳优化)】BZOJ2744-[HEOI2012]朋友圈的更多相关文章
- BZOJ2744:[HEOI2012]朋友圈(最大团,乱搞)
Description 在很久很久以前,曾经有两个国家和睦相处,无忧无虑的生活着.一年一度的评比大会开始了,作为和平的两国,一个朋友圈数量最多的永远都是最值得他人的尊敬,所以现在就是需要你求朋友圈的最 ...
- 【BZOJ 2744】 2744: [HEOI2012]朋友圈 (最大团,二分图匹配,构图)
2744: [HEOI2012]朋友圈 Description 在很久很久以前,曾经有两个国家和睦相处,无忧无虑的生活着.一年一度的评比大会开始了,作为和平的两国,一个朋友圈数量最多的永远都是最值得他 ...
- luogu P2423 [HEOI2012]朋友圈 (最大团)
在很久很久以前,曾经有两个国家和睦相处,无忧无虑的生活着. 一年一度的评比大会开始了,作为和平的两国,一个朋友圈数量最多的永远都是最值得他人的尊敬,所以现在就是需要你求朋友圈的最大数目.两个国家看成是 ...
- bzoj 2744 [HEOI2012]朋友圈——补图!+匈牙利算法
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2744 求最大的团<==>补图(有边的变成没边.没边的变成有边)的最大独立集! A ...
- 【POJ】1419:Graph Coloring【普通图最大点独立集】【最大团】
Graph Coloring Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 5775 Accepted: 2678 ...
- UVALive 6811 Irrigation Line(二分图最小点覆盖--匈牙利算法)
题意:求最少的线可以覆盖一个由0.1两种数字组成的图中所有的1. eg: 只需要两条线即可. 分析: 1.先为上述例子的行列标号 2.若图中数字为1,则代表该数字所在的行与列有关联. 例如第r1行第c ...
- [SCOI2010]连续攻击游戏 匈牙利算法
觉得题目水的离开 不会匈牙利的请离开 不知道二分图的请离开 不屑的大佬请离开 ……. 感谢您贡献的访问量 ————————————华丽的分割线———————————— 扯淡完了,先重温一下题目 [SC ...
- bzoj 1059: [ZJOI2007]矩阵游戏【匈牙利算法】
注意到怎么换都行,但是如果把某个黑方块用在对角线上,它原来所在的行列的的黑方块就都不能用 所以要选出n组不重的行列组合,这里用匈牙利算法做二分图匹配即可(用了时间戳优化) #include<io ...
- 二分图最大匹配(匈牙利算法)简介& Example hdu 1150 Machine Schedule
二分图匹配(匈牙利算法) 1.一个二分图中的最大匹配数等于这个图中的最小点覆盖数 König定理是一个二分图中很重要的定理,它的意思是,一个二分图中的最大匹配数等于这个图中的最小点覆盖数.如果你还不知 ...
随机推荐
- End to End Sequence Labeling via Bidirectional LSTM-CNNs-CRF论文小结
本篇论文是卡内基梅隆大学语言技术研究所2016年 arXiv:1603.01354v5 [cs.LG] 29 May 2016 今天先理解一下这个是什么意思: 找到的相关理解:arXi ...
- 如何创建和销毁对象(Effective Java 第二章)
最近有在看Effective Java,特此记录下自己所体会到的东西,写篇博文会更加的加深印象,如有理解有误的地方,希望不吝赐教. 这章主题主要是介绍:何时以及如何创建对象,何时以及如何避免创建对象, ...
- 报错注入遇到ERROR 1242 (21000): Subquery returns more than 1 row解决方案
我的SQL语句是这样写的. mysql> select 1,2,3 and updatexml(1,concat(1,(select user from mysql.user),1),1);ER ...
- python自动开发之第二十三天(Django)
一.一大波model操作 1. 创建数据库表 # 单表 # app01_user ==> tb1 # users class User(models.Model): name = models. ...
- Content to Node: Self-Translation Network Embedding
paper:https://dl.acm.org/citation.cfm?id=3219988 data & code:http://dm.nankai.edu.cn/code/STNE.r ...
- 关于移动端audio自动播放问题
本人小白全栈一枚,给公司写了一个监控中心,要求严重报警的时候需要触发音频播放,于是就有了以下的折腾. 刚开始一切都很顺利,自然而然的写了以下代码. <audio id="myaudio ...
- P2737 [USACO4.1]麦香牛块Beef McNuggets(完全背包+数论确定上界)
题目链接:https://www.luogu.org/problem/show?pid=2737 题目大意:农夫布朗的奶牛们正在进行斗争,因为它们听说麦当劳正在考虑引进一种新产品:麦香牛块.奶牛们正在 ...
- 无锁的对象引用:AtomicReference
http://www.dewen.net.cn/q/9588 首先volatile是java中关键字用于修饰变量,AtomicReference是并发包java.util.concurrent.ato ...
- 亲测能用的mysqli类,挺好用的
<?php header('content-type:text/html;charset=utf-8'); /* 掌握满足单例模式的必要条件 (1)私有的构造方法-为了防止在类外使用new关键字 ...
- AC日记——围栏木桩 洛谷 P2362
围栏木桩 思路: DP: 代码: #include <bits/stdc++.h> using namespace std; #define maxn 2001 int n,m,ai[ma ...