cogs 2620. [HEOI2012]朋友圈
/*70分 被卡T*/
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int a[],b[],na,nb,m,head[],num;
int T1,T2,ban[],Link[],vis[],tim[],T;
bool map[][];
struct node{int to,pre;}e[];
void Insert(int from,int to){
e[++num].to=to;
e[num].pre=head[from];
head[from]=num;
}
int count(int x){
int res=;
while(x){
res+=x&;
x>>=;
}
return res;
}
bool find(int x){
if(ban[x]==T1)return ;
for(int i=head[x];i;i=e[i].pre){
int to=e[i].to;
if((ban[to]!=T1)&&(vis[to]!=T2)){
vis[to]=T2;
if(tim[to]!=T1||!Link[to]||find(Link[to])){
tim[to]=T1;
Link[to]=x;
return ;
}
}
}
return ;
}
int mis(int x=,int y=){
T1++;int res=;
for(int i=;i<=nb;i++)
if(map[x][i]||map[y][i])ban[i]=T1,res++;
for(int i=;i<=nb;i++)
if(b[i]&){
T2++;
if(find(i))res++;
}
return nb-res;
}
int main(){
freopen("friends.in","r",stdin);freopen("friends.out","w",stdout);
scanf("%d",&T);
while(T--){
memset(map,,sizeof(map));
memset(head,,sizeof(head));
memset(Link,,sizeof(Link));
memset(ban,,sizeof(ban));
memset(tim,,sizeof(tim));
memset(vis,,sizeof(vis));
num=;T1=;T2=;
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]);
int x,y;
for(int i=;i<=m;i++){
scanf("%d%d",&x,&y);
map[x][y]=;
}
for(int i=;i<=nb;i++)
for(int j=i;j<=nb;j++){
if(((b[i]^b[j])%==)&&(count(b[i]|b[j])%==))
Insert(i,j),Insert(j,i);
}
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++)
for(int j=;j<=na;j++)
if((a[i]^a[j])%==)ans=max(ans,mis(i,j)+);
printf("%d\n",ans);
}
return ;
}
cogs 2620. [HEOI2012]朋友圈的更多相关文章
- bzoj 2744: [HEOI2012]朋友圈 二分图匹配
2744: [HEOI2012]朋友圈 Time Limit: 30 Sec Memory Limit: 128 MBSubmit: 612 Solved: 174[Submit][Status] ...
- 【BZOJ 2744】 2744: [HEOI2012]朋友圈 (最大团,二分图匹配,构图)
2744: [HEOI2012]朋友圈 Description 在很久很久以前,曾经有两个国家和睦相处,无忧无虑的生活着.一年一度的评比大会开始了,作为和平的两国,一个朋友圈数量最多的永远都是最值得他 ...
- 【BZOJ 2744 】[HEOI2012]朋友圈
Description 在很久很久以前,曾经有两个国家和睦相处,无忧无虑的生活着.一年一度的评比大会开始了,作为和平的两国,一个朋友圈数量最多的永远都是最值得他人的尊敬,所以现在就是需要你求朋友圈的最 ...
- BZOJ2744:[HEOI2012]朋友圈(最大团,乱搞)
Description 在很久很久以前,曾经有两个国家和睦相处,无忧无虑的生活着.一年一度的评比大会开始了,作为和平的两国,一个朋友圈数量最多的永远都是最值得他人的尊敬,所以现在就是需要你求朋友圈的最 ...
- 【刷题】BZOJ 2744 [HEOI2012]朋友圈
Description 在很久很久以前,曾经有两个国家和睦相处,无忧无虑的生活着.一年一度的评比大会开始了,作为和平的两国,一个朋友圈数量最多的永远都是最值得他人的尊敬,所以现在就是需要你求朋友圈的最 ...
- luogu P2423 [HEOI2012]朋友圈 (最大团)
在很久很久以前,曾经有两个国家和睦相处,无忧无虑的生活着. 一年一度的评比大会开始了,作为和平的两国,一个朋友圈数量最多的永远都是最值得他人的尊敬,所以现在就是需要你求朋友圈的最大数目.两个国家看成是 ...
- 【二分图】HEOI2012 朋友圈
题目内容 洛谷链接 在很久很久以前,曾经有两个国家和睦相处,无忧无虑的生活着. 一年一度的评比大会开始了,作为和平的两国,一个朋友圈数量最多的永远都是最值得他人的尊敬,所以现在就是需要你求朋友圈的最大 ...
- [HEOI2012]朋友圈
题目 我们发现我们要求的是一个最大团问题,众所周知这是一个\(NP\)难问题,除了爆搜没有什么别的方法,但是这道题我们可以根据图的特殊性质入手 我们如果把\(B\)国的人分成奇数和偶数两类,就会发现奇 ...
- bzoj 2744: [HEOI2012]朋友圈
#include<cstdio> #include<iostream> #define M 3010 using namespace std; ],u[M*M>>] ...
随机推荐
- POJ 1270 Following Orders(拓扑排序)
题意: 给两行字符串,第一行为一组变量,第二行时一组约束(每个约束包含两个变量,x y 表示 x <y).输出满足约束的所有字符串序列. 思路:拓扑排序 + 深度优先搜索(DFS算法) 课本代码 ...
- 计算机丨浏览器访问出现DNS_PROBE_POSSIBLE解决方法
方法1.打开命令控制台输入: netsh winsock reset.提示重启,电脑重启后就ok了. 其他方法待续......
- C++ 值传递、址传递、引用传递
一.值传递 int func(int p) 值传递会在栈中开辟一块空间 p,使得p和实参的a 同值. 此时你在函数func里面对p进行任何操作都不会对原值a产生任何影响.因为a 和p本就就是两个变 ...
- luogu2627 修剪草坪
dp[i]表示1~i最大效率 记一下前缀和 转移就是f[i]=max(f[i],f[j-1]-sum[j])+sum[i] (i-k<=j<=i) 发现括号里的只与j有关 开一个单调队列维 ...
- UVA11059 - Maximum Product
1.题目名称 Maximum Product 2.题目地址 https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemi ...
- [Luogu3960][NOIP2017]列队
luogu sol 震惊!\(NOIP\)居然也出数据结构! 话说回来,其实只需要对每一行的前\(m-1\)个人维护一个数据结构,然后对最后一列的\(m\)个人也维护一个数据结构就好了.具体的话写平衡 ...
- ACM学习历程—HDU5423 Rikka with Tree(搜索)
Problem Description As we know, Rikka is poor at math. Yuta is worrying about this situation, so he ...
- nvidia-docker 安装
1.安装docker 官方网址安装说明 https://docs.docker.com/install/linux/docker-ce/ubuntu/ 2.ubuntu 14.04/16.04/18. ...
- 安装DCOS,关于docker异常引发的调查
入门DCOS,刚开始安装,碰到了一个异常: Bind for 0.0.0.0:9000 failed: port is already allocated. 调试这个问题花费了好长时间,因为无法通过n ...
- vijos1779国王游戏
描述 恰逢H国国庆,国王邀请n位大臣来玩一个有奖游戏.首先,他让每个大臣在左.右手上面分别写下一个整数,国王自己也在左.右手上各写一个整数.然后,让这n位大臣排成一排,国王站在队伍的最前面.排好队后, ...