码迷,mamicode.com
首页 > 其他好文 > 详细

[POJ2443]Set Operation(bitset)

时间:2017-09-08 21:47:17      阅读:110      评论:0      收藏:0      [点我收藏+]

标签:++   clu   cst   return   org   ace   amp   include   logs   

传送门

 

题意:给出n个集合(n<=1000),每个集合中最多有10000个数,每个数的范围为1~10000,给出q次询问(q<=200000),每次给出两个数u,v判断是否有一个集合中同时含有u,v两个数 

 

枚举每一个集合,看看是否同时又u和v,显然超时

 

用bitset维护每一个数所在集合,求解的时候直接即可u & v

 

#include <cstdio>
#include <bitset>

using namespace std;

int n, m;
bitset <1001> t, s[10001];

int main()
{
	int i, j, x, y;
	while(~scanf("%d", &n))
	{
		for(i = 0; i <= 10000; i++) s[i].reset();
		for(i = 1; i <= n; i++)
		{
			scanf("%d", &m);
			for(j = 1; j <= m; j++)
			{
				scanf("%d", &x);
				s[x][i] = 1;
			}
		}
		scanf("%d", &m);
		for(i = 1; i <= m; i++)
		{
			scanf("%d %d", &x, &y);
			t = s[x] & s[y];
			if(t.count()) puts("Yes");
			else puts("No");
		}
	}
	return 0;
}

  

[POJ2443]Set Operation(bitset)

标签:++   clu   cst   return   org   ace   amp   include   logs   

原文地址:http://www.cnblogs.com/zhenghaotian/p/7496169.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!