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

POJ 2443 Set Operation 题解

时间:2020-05-31 18:00:20      阅读:54      评论:0      收藏:0      [点我收藏+]

标签:its   amp   line   put   scan   出现   lan   直接   时间复杂度   

题意:

给定一堆集合和一堆询问,每次询问给出两个数 \(x,y\),如果 \(x\)\(y\) 出现在了同一个集合内,则输出 Yes,否则输出 No

考虑把每个数字所出现的位置记下来,并使用 bitset。

每次询问的时候,就将两个 bitset 做一个与运算,只要有一个为 \(1\) 就直接输出。

时间复杂度 \(O(N\times c_i+2000\times Q)\)

如下为 \(C^{\text{艹}}\) 代码:

bitset<1010> bit[10010],t;
int n,x,y,q;
int main() {
 scanf("%d",&n);
 for(int i=1;i<=n;i++) {
  scanf("%d",&x);
  for(int j=1;j<=x;j++) {
   scanf("%d",&y);
   bit[y][i]=1;
  }
 }
 scanf("%d",&q);
 while(q--) {
  scanf("%d %d",&x,&y);
  t=bit[x]&bit[y];
  if(t.any())
   puts("Yes");
  else
   puts("No");
 }
}

POJ 2443 Set Operation 题解

标签:its   amp   line   put   scan   出现   lan   直接   时间复杂度   

原文地址:https://www.cnblogs.com/lajiccf/p/13019682.html

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