Description

给定两个集合A、B,集合内的任一元素x满足1 ≤ x ≤ 109,并且每个集合的元素个数不大于105。我们希望求出A、B之间的关系。
任 务 :给定两个集合的描述,判断它们满足下列关系的哪一种:
A是B的一个真子集,输出“A is a proper subset of B”
B是A的一个真子集,输出“B is a proper subset of A”
A和B是同一个集合,输出“A equals B”
A和B的交集为空,输出“A and B are disjoint”
上述情况都不是,输出“I’m confused!”

Input

输入有两行,分别表示两个集合,每行的第一个整数为这个集合的元素个数(至少一个),然后紧跟着这个集合的元素(均为不同的正整数)

Output

只有一行,就是A、B的关系。

Sample Input

样例1
2 55 27
2 55 27
样例2
3 9 24 1995
2 9 24
样例3
3 1 2 3
4 1 2 3 4
样例4
3 1 2 3
3 4 5 6
样例5
2 1 2
2 2 3

Sample Output

样例1
A equals B
样例2
B is a proper subset of A
样例3
A is a proper subset of B
样例4
A and B are disjoint
样例5
I’m confused!

.
.
.
.
.
分析
我们先不管A 与 B 的具体关系如何,注意到这个问题的本质就是对于给定的集合A ,确定B 中的元素是否在 A 中。所以,我们使用哈希表来处理。至于哈希函数,只要按照除余法就行了

当然,也可以用快排+二分做

.
.
.
.
.
哈希

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;int mo=155559;
int h[155559];int hash(int x)
{int wz=x%mo;int i=0;while (i<mo&&h[(wz+i)%mo]!=-1&&h[(wz+i)%mo]!=x) i++;return (wz+i)%mo;
}int main()
{int na,nb;scanf("%d",&na);memset(h,-1,sizeof(h));for (int i=1;i<=na;i++){int a;scanf("%d",&a);h[hash(a)]=a;}int ans=0;scanf("%d",&nb);for (int i=1;i<=nb;i++){int b;scanf("%d",&b);if (h[hash(b)]==b) ans++;}if (na==nb&&na==ans) printf("A equals B"); elseif (ans==0) printf("A and B are disjoint"); elseif (na>nb&&nb==ans) printf("B is a proper subset of A"); elseif (nb>na&&na==ans) printf("A is a proper subset of B"); elseprintf("I'm confused!");return 0;
}

.
.
.
.
.

快排+二分

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int ans=0,a[100001],na,nb;void ef(int x)
{int l=1,r=na,mid;while (l<=r){mid=(l+r)/2;if (a[mid]==x) {ans++;return;}if (a[mid]>x) r=mid-1; else l=mid+1;}
}int main()
{scanf("%d",&na);for (int i=1;i<=na;i++)scanf("%d",&a[i]);sort(a+1,a+na+1);scanf("%d",&nb);for (int i=1;i<=nb;i++){int b;scanf("%d",&b);ef(b);}if (na==nb&&na==ans) printf("A equals B"); elseif (ans==0) printf("A and B are disjoint"); elseif (na>nb&&nb==ans) printf("B is a proper subset of A"); elseif (nb>na&&na==ans) printf("A is a proper subset of B"); elseprintf("I'm confused!");return 0;
}```

转载于:https://www.cnblogs.com/YYC-0304/p/10292794.html

集合(normal)相关推荐

  1. python数据分析常用包_python可视化数据分析常用图大集合(收藏)

    python数据分析常用图大集合:包含折线图.直方图.垂直条形图.水平条形图.饼图.箱线图.热力图.散点图.蜘蛛图.二元变量分布.面积图.六边形图等12种常用可视化数据分析图,后期还会不断的收集整理, ...

  2. Java集合,ConcurrentHashMap底层实现和原理(常用于并发编程)

    为什么80%的码农都做不了架构师?>>>    概述 ConcurrentHashMap常用于并发编程,这里就从源码上来分析一下ConcurrentHashMap数据结构和底层原理. ...

  3. Windows App开发之集合控件与数据绑定

    为ListView和GridView添加数据 ListView采用垂直堆叠得方式显示数据,而GridView则采用水平堆叠得方式. 长相的话嘛,它们都差不多. <Grid Name=" ...

  4. EF架构~单表一对多集合的插入(树型结构)

    单表一对多关系很常见,它是一种树形结构,如系统菜单表,部门表,分类表,这些都可以做成单表一对多关系,而这些表做成一对多关系后,如果通过EntityFramework进行插入操作时,会很方便,EF会自动 ...

  5. DL:深度学习算法(神经网络模型集合)概览之《THE NEURAL NETWORK ZOO》的中文解释和感悟(四)

    DL:深度学习算法(神经网络模型集合)概览之<THE NEURAL NETWORK ZOO>的中文解释和感悟(四) 目录 CNN DN DCIGN 相关文章 DL:深度学习算法(神经网络模 ...

  6. java concurrentmap原理_Java集合番外篇 -- ConcurrentHashMap底层实现和原理

    概述 距离上一次集合篇结束已经过了好久了, 之前说要写一下番外,但是太忙了,总也找不出相对松散的时间,也有点静不下心来,最近花了点时间,于是便有了这篇博客. 在开始之前先介绍一个算法, 这个算法和Co ...

  7. Java 基础 - 各项集合实现

    [toc] Java 类库中的集合接口和迭代器 集合接口及迭代器 集合类的基本接口是:Collection public interface Collection<E>{// 集合改变返回 ...

  8. 终于,我读懂了所有Java集合——map篇(多线程)

    多线程环境下的问题 1.8中hashmap的确不会因为多线程put导致死循环(1.7代码中会这样子),但是依然有其他的弊端,比如数据丢失等等.因此多线程情况下还是建议使用ConcurrentHashM ...

  9. C#4.0 Collections【集合】

    URI:http://www.albahari.com/nutshell/cs4ch07.aspx 集合: Implementing IEnumerable<T> with an iter ...

最新文章

  1. 《多处理器编程的艺术》读书笔记(2)--- 互斥
  2. SQL Loader 的使用详解
  3. 导体阻抗计算公式_同轴线缆特性阻抗的介绍及测量
  4. linux内核分析——扒开系统调用的三层皮(上)
  5. Taro+react开发(16)--跳转拿参
  6. SpringBoot自定义Filter
  7. java file数组 初始化_java从文件中读取数据并赋值给数组
  8. 设计模式原则之六:依赖倒置原则
  9. 【项目实战】基于 springboot + mybatis + mysql 的电脑商城项目(附源码)
  10. 物联网工程导论 简单整理
  11. qq视频转码失败怎么办_教程:如何下载舞蹈视频里面的音乐?
  12. 易语言 修改易语自身言皮肤方法
  13. 使用Struts之ActionForm
  14. Softmax函数及其导数
  15. java 图片压缩 base64,图片的尺寸 大小压缩 和转化为base64
  16. 开网店应该如何不用自己发货呢?
  17. 计算计算机系统包括哪些内容,什么是MIPS计算机系统的运算器
  18. 【时序异常检测翻译】1.DeepAnT: A Deep Learning Approach for Unsupervised Anomaly Detection in Time Series
  19. 直击用户大脑——用户研究新方法(眼动与脑电数据分析)
  20. SAP术语总结详细版(转)

热门文章

  1. 云炬Android开发笔记 3-1项目架构初始化
  2. 官方wdpc安装文档,推荐RPM包安装
  3. 计算机管理磁盘管理,如何打开磁盘管理?
  4. MatConvnet工具箱文档翻译理解(4)
  5. VTK修炼之道26:图像基本操作_三维图像切片提取
  6. 遵循学术写作的九步骤,让写论文变成一件简单的事
  7. Delphi中Tobject与Variant之间的转换
  8. javascript如何释放内存
  9. 一文读懂汇编程序的多个分段的程序--详解
  10. Java数组的基本知识点