C++之路进阶——codevs2366(朋友圈)
2366 朋友圈
2012年省队选拔赛河北
在很久很久以前,曾经有两个国家和睦相处,无忧无虑的生活着。
一年一度的评比大会开始了,作为和平的两国,一个朋友圈数量最多的永远都是最值得
他人的尊敬,所以现在就是需要你求朋友圈的最大数目。
两个国家看成是 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是朋友
由于落后的古代,没有电脑这个也就成了每年最大的难题,而你能帮他们求出最大朋
友圈的人数吗?
第一行 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 国人是朋友。
输出 t 行,每行,输出一个整数,表示最大朋友圈的数目。
1
2 4 7
1 2
2 6 5 4
1 1
1 2
1 3
2 1
2 2
2 3
2 4
5
对于其中 30%的数据,A=0,B<=100;
对于其中 50%的数据,A<=10,B<=100;
对于其中 10%的数据,A<=5,B<=1000;
对于其中 10%的数据,A<=5,B<=1500;
对于 100%的数据,M<=A*B,友善值在2^30 以内。
题解:
对与A图而言,奇数与奇数相连,偶数与偶数相连,A图中只能选一个或者不选,最多一奇一偶,对于B图而言,求最大团,建立反边,求最大独立子集,(ps:原本与A图所连边的点是不能算的)
代码:
#include<cstdio>
#include<iostream>
#define maxn 50000
#include<cstring>
#include<algorithm> using namespace std; int m,head[maxn],A,B,a[maxn],b[maxn],x,y,cnt=,ans,T1,T2,bank[maxn],res[maxn],tim[maxn],sta[maxn];
bool map[][]; struct ss
{
int to;
int next;
}e[maxn]; int Cout(int x)
{
int re=;
while (x)
{
x-=x&-x;
++re;
}
return re;
} void add(int u,int v)
{
e[++cnt].next=head[u];
head[u]=cnt;
e[cnt].to=v;
} bool find(int x)
{
if (bank[x]==T1) return ;
for (int i=head[x];i;i=e[i].next)
if (bank[e[i].to]!=T1&&sta[e[i].to]!=T2)
{
sta[e[i].to]=T2;
if (tim[e[i].to]!=T1||!res[e[i].to]||find(res[e[i].to]))
{
tim[e[i].to]=T1;
res[e[i].to]=x;
return ;
}
}
return ;
} int Maximum_Independent_Set(int x=,int y=)
{
int re=;
++T1;
for (int i=;i<=B;i++)
if (map[x][i]||map[y][i])
{
bank[i]=T1;
++re;
}
for (int i=;i<=B;i++)
if (b[i]&)
{
++T2;
if (find(i))
++re;
}
return B-re;
} int main()
{
memset(map,,sizeof map);
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++)
scanf("%d%d",&x,&y),map[x][y]=;
for (int i=;i<=B;i++)
if (b[i]&)
for (int j=;j<=B;j++)
if (~b[j]&)
if (~Cout(b[i]|b[j])&)
add(i,j);
for (int i=;i<=B;i++)
map[][i]=;
ans=Maximum_Independent_Set();
for (int i=;i<=A;i++)
ans=max(Maximum_Independent_Set(i)+,ans);
for (int i=;i<=A;i++)
if (a[i]&)
for (int j=;j<=A;j++)
if (~a[j]&)
ans=max(Maximum_Independent_Set(i,j)+,ans);
printf("%d",ans);
return ;
}
C++之路进阶——codevs2366(朋友圈)的更多相关文章
- (转载) listview实现微信朋友圈嵌套
listview实现微信朋友圈嵌套 标签: androidlistview 2016-01-06 00:05 572人阅读 评论(0) 收藏 举报 分类: android(8) 版权声明:本文为博 ...
- 苹果M1芯片各种不支持,但居然可以刷朋友圈!你会买单吗?
上个月和大家一起分享过,最新的苹果M1芯片上支持的各种开源软件.什么?还没读过?赶紧点这里:一文解读苹果 M1 芯片电脑上的开源软件. 现在已经过去了半个月,想必有不少的同学都已经入手了最新的苹果M1 ...
- QQ空间/朋友圈类界面的搭建
类似于QQ空间的布局主要是在说说信息.点赞.回复三大部分的自适应布局上. 当我们需要搭建类似QQ空间.微信朋友圈的界面的时候,可做如下操作: 创建一个对应的model类: 创建一个对应model类的f ...
- Python微信-- 分享接口(分享到朋友圈、朋友、空间)
生成JS-SDK权限验证的签名 获取signature(签名)首先要获得 1.#获得jsapi_ticket 2.#获取当前页面的url #获取当前页面的url url="{}://{}{} ...
- Apple Watch版微信来了 收发微信刷朋友圈不在话下
昨晚果粉守了一夜的Apple Watch发布会,意料中的惊喜不少,最让人兴奋的是微信成为首批支持的应用.是的,在全球拥有4.68亿月活跃用户的微信怎么可能不第一时间入驻呢?之前我们就有聊过Apple ...
- UC浏览器 分享到朋友圈和微信好友 分类: JavaScript 2015-04-28 14:45 615人阅读 评论(1) 收藏
用手机UC浏览器访问新浪微博,会注意到有这样的两个分享按钮: 在手机端浏览器里,点击分享按钮,就可以启动微信客户端并分享到微信.研究了下其源代码,存在这样的一个js:http://mjs.sinaim ...
- iOS版微信朋友圈数据库的简要分析
本文版权归cxun所有,如有转载请注明出处与本文链接,谢谢!原文地址:http://www.cnblogs.com/cxun/p/4550523.html 之前写了一些关于微信聊天记录的博文之后,不少 ...
- android接入微信分享(朋友、朋友圈)、QQ分享(好友、空间)
1.申请注册你的appid 2.下载sdk QQ: http://wiki.open.qq.com/wiki/mobile/SDK%E4%B8%8B%E8%BD%BD 微信:https://open. ...
- 微信朋友圈转疯了(golang写小爬虫抓取朋友圈文章)
很多人在朋友圈里转发一些文章,标题都是什么转疯啦之类,虽然大多都也是广告啦,我觉得还蛮无聊的,但是的确是有一些文章是非常值得收藏的,比如老婆经常就会收藏一些养生和美容的文章在微信里看. 今天就突发奇想 ...
随机推荐
- Blender to XPS(blender 2.7x Internal materials)
Things we are gonna need are Blender 2.7x www.blender.org/ XPS tools addon for Blender A model made ...
- [daily][archlinux][pacman] local database 损坏
下午,开心的看着dpdk的文档,做做各种小实验. 后台正常yaourt -Syu,三个多G的下载,我总是过很久才update一次. 然后KDE窗口各种异常,我知道又在开始更x相关的东西了.可是因为X异 ...
- extjs MVC模式的个人看法
针对一个后台管理页面是mvc模式,后台也是mvc模式下的项目,要怎么去熟悉呢? 首先以我个人的认解,先从后台的管理界面来看,会有control,model,store,view:其中先看view的代码 ...
- Java中对象构造
构造函数 作用:在构造对象的同时初始化对象.java强制要求对象 诞生同时被初始化,保证数据安全. 调用过程和机制:①申请内存,②执行构造函数的函数体,③返回对象的引用. 特点:与类同名,无返回类型, ...
- Erlang ERTS的Trap机制的设计及其用途
出处:http://mryufeng.iteye.com/blog/334744 erlang的trap机制在实现中用的很多,在费时的BIF操作中基本上都可以看到.它的实现需要erl vm的配合.它的 ...
- C/C++ 笔试、面试题目大汇总
1.求下面函数的返回值( 微软) int func(x) { int countx =0; while(x) { countx ++; x = x&(x-1); } return countx ...
- Wordpress添加关键词和描述
找到主题的header.php文件,然后在其<head>标签内加入加一下代码: 详细版 <?php $description = ''; $keywords = ''; if (is ...
- js中的类GET方法
其实是通过js语句自己建的函数 function request(strParame){ var args = new Object(); ); var pairs = query.split(&qu ...
- imx6 system boot
imx6开机启动就进入download模式,有的板子进入文件系统之后会进入download模式.查看datasheet,Chapter 8 System Boot查找原因,记录于此. freescal ...
- 我的工具箱之Putty
这是类似于SecureCrt的终端仿真软件,个人感觉比SecureCrt差一点. 下载地址是:http://pan.baidu.com/s/1sko0GrF SecureCrt网址在我的工具箱之Sec ...