UVa 496 Simply Subsets (STL&set_intersection)

原创 2013年12月04日 20:53:06

http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=24&page=show_problem&problem=437


先介绍<algorithm>头文件中与集合运算有关的4个函数:


很明显,这里要判断两个集合的关系,使用交集来判断就行了。

使用方法:

set_intersection(a, a + n, b, b + m, v.begin());
这里v是动态数组,用于保存交运算结果。(其他函数的使用方法均与之类似)

该函数的返回值减去v.begin()就是集合的大小。

完整代码:

/*0.016s*/

#include<bits/stdc++.h>
using namespace std;

int a[100], b[100];
vector<int> v(100);///初始化空间是必须的

int main()
{
	int n, m, cnt, diff;
	char ch;
	while (~scanf("%d%c", &a[0], &ch))
	{
		for (n = 1; ch != 10; ++n)
			scanf("%d%c", &a[n], &ch);
		cnt = scanf("%d%c", &b[0], &ch);
		for (m = 1; ch != 10 && cnt == 2; ++m)
			cnt = scanf("%d%c", &b[m], &ch);
		sort(a, a + n);
		sort(b, b + m);
		diff = set_intersection(a, a + n, b, b + m, v.begin()) - v.begin();
		if (diff == min(n, m))
		{
			if (n < m) puts("A is a proper subset of B");
			else if (n > m) puts("B is a proper subset of A");
			else puts("A equals B");
		}
		else if (diff) puts("I'm confused!");
		else puts("A and B are disjoint");
	}
	return 0;
}

stl中set的并、交、差集

set可以对键值是自动排序的,对应的求并集差集交集都可以用到这个有序的特性,时间复杂度都为O(m+n),m,n分别为两个容器的大小 1.set_union可以用来求两个集合的并集,它是一种稳定的操作,...
  • u011608357
  • u011608357
  • 2014年09月07日 21:41
  • 1574

STL 算法vector/set集合-交集,并集,差集,对称差

针对这里提及的四个集合运算必须特别注意:  1、第一个算法需保证第一集合和第二集合有序,并从小到大排序,内部使用默认“ 2、第二个算法需保证第一集合和第二集合有序,排序方式参照Compare确定,内部...
  • kalilili
  • kalilili
  • 2014年12月26日 21:13
  • 5702

关于C++里面使用set_union,set_intersection等函数的使用总结

set里面有set_intersection(取集合交集)、set_union(
  • u013084907
  • u013084907
  • 2014年04月05日 15:18
  • 4024

STL algorithm算法set_difference,set_intersection(53)

set_difference原型: std::set_difference default (1) template OutputIterator set_...
  • guang_jing
  • guang_jing
  • 2014年09月26日 09:46
  • 1646

STL之set_uva10815

Problem B: Andy's First Dictionary Time limit: 3 seconds Andy, 8, has a dream - he wants...
  • xxiaobaib
  • xxiaobaib
  • 2016年04月15日 23:07
  • 153

UVA12096,STL stack和set,Map的综合运用

&emsp;紫书的STL介绍,比较抽象,教我们怎么表示一些抽象的集合并进行一些简单的操作,其中Set_Set_ID和vector Set_Set;是关键,然后关于set_union,set_inter...
  • gyh_420
  • gyh_420
  • 2017年04月08日 23:03
  • 121

UVa-10815-Andy's First Dictionary c++ STL set 基础练习题

题意:输入一个文本,找出所有不同的单词,按字典序排列输出,不区分大小写                 本题主要是让我们练习STL set容器的使用和了解其特点         set 容器具...
  • a912952381
  • a912952381
  • 2017年05月18日 16:23
  • 105

UVA 156 Ananagrams(stl,map,set)

例题4:UVA 156 Ananagrams 题目:把每个单词全部转化成小写字母,对每个单词,看它的字母重排后得到的单词在所有输入的单词中是否出现过,若没有出现,就输出原单词。所有要输出的单词按字典...
  • zcmartin2014214283
  • zcmartin2014214283
  • 2017年02月12日 19:59
  • 221

CF 496E 贪心,排序,set

题目链接:这里 题意:有n首曲子,每首曲子的范围为ai~bi。有m个演奏家,每个演奏家的范围为ci~di,并且可以出演次数为ki次。如果ci...
  • just_sort
  • just_sort
  • 2017年03月09日 09:54
  • 321

Q9.4 Write a method that returns all subsets of a set.

Q:Write a method that returns all subsets of a set. A:DFS. #include #include #include using name...
  • xinxinxv
  • xinxinxv
  • 2015年01月25日 14:27
  • 320
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:UVa 496 Simply Subsets (STL&set_intersection)
举报原因:
原因补充:

(最多只允许输入30个字)