Codeforces 11.23

传送门:D. Colorful Graph

求和某点关联的和这点颜色不同的颜色种数最多点的颜色,说起来有点绕口,但就是这个意思。用set求和这点关联点的颜色种数(set去重),即为edge[c[i]].size()。O(N)求最大值,记录颜色。这题唯一的好处就是学会了set。set里面的count调用还可以代替哈希表来判重,一次操作复杂度O(logn),是一个很灵活地东西。

引致:http://baike.baidu.com/view/4255961.htm

View Code
 1 #include <set>
 2 一个集合(set)是一个容器,它其中所包含的元素的值是唯一的。
 3 
 4 如:set<int,less<int> > set1;
 5 less<int>是一个标准类,用于形成升序排列函数对象。降序排列是用greater<int> 6 
 7 begin() 返回指向第一个元素的迭代器
 8 clear() 清除所有元素
 9 count() 返回某个值元素的个数
10 empty() 如果集合为空,返回true(真)
11 end() 返回指向最后一个元素之后的迭代器,不是最后一个元素
12 equal_range() 返回集合中与给定值相等的上下限的两个迭代器
13 erase() 删除集合中的元素
14 find() 返回一个指向被查找到元素的迭代器
15 get_allocator() 返回集合的分配器
16 insert() 在集合中插入元素
17 lower_bound() 返回指向大于(或等于)某值的第一个元素的迭代器
18 key_comp() 返回一个用于元素间值比较的函数
19 max_size() 返回集合能容纳的元素的最大限值
20 rbegin() 返回指向集合中最后一个元素的反向迭代器
21 rend() 返回指向集合中第一个元素的反向迭代器
22 size() 集合中元素的数目
23 swap() 交换两个集合变量
24 upper_bound() 返回大于某个值元素的迭代器
25 value_comp() 返回一个用于比较元素间的值的函数
posted @ 2012-11-23 23:46  zhang1107  阅读(101)  评论(0编辑  收藏  举报