NYOJ528-找球號(三)
找球號(三)
時間限製:2000 ms | 內存限製:3000 KB
難度:2
描述
xiaod現在正在某個球場負責網球的管理工作。為了方便管理,他把每個球都編了號,且每個編號的球的總個數都是偶數。有一天,xiaod發現
少了一個球,你能幫他找出丟的那個球的球號嗎?
輸入
有多組測試數據。每組數據包括兩行。
第一行是一個整數N(0<N<1000000),表示現在所剩的球數。
隨後的一行是N個數,表示所剩的各個球的編號M(0<M<10^9)。
輸出
對於每組數據,輸出弄丟的那個球的球號。
樣例輸入
5
1 1 3 6 6
3
1 2 1樣例輸出
3
2來源
hdu改編
上傳者
ACM_丁國強
用到了c++裏STL庫裏麵的一個容器---set容器
集和多集(set 和multiset 容器類)
#include <set>
一個集合(set)是一個容器,它其中所包含的元素的值是唯一的。
集和多集的區別是:set支持唯一鍵值,set中的值都是特定的,而且隻出現一次;而multiset中可以出現副本鍵,同一值可以出現多次
set容器的常用方法:
begin() 返回指向第一個元素的迭代器
clear() 清除所有元素
count() 返回某個值元素的個數
empty() 如果集合為空,返回true(真)
end() 返回指向最後一個元素之後的迭代器,不是最後一個元素
equal_range() 返回集合中與給定值相等的上下限的兩個迭代器
erase() 刪除集合中的元素
find() 返回一個指向被查找到元素的迭代器
get_allocator() 返回集合的分配器
insert() 在集合中插入元素
lower_bound() 返回指向大於(或等於)某值的第一個元素的迭代器
key_comp() 返回一個用於元素間值比較的函數
max_size() 返回集合能容納的元素的最大限值
rbegin() 返回指向集合中最後一個元素的反向迭代器
rend() 返回指向集合中第一個元素的反向迭代器
size() 集合中元素的數目
swap() 交換兩個集合變量
upper_bound() 返回大於某個值元素的迭代器
value_comp() 返回一個用於比較元素間的值的函數
#include<stdio.h> #include<set> using namespace std; set<int>a; int main() { int i,n,m; while(scanf("%d",&n)!=EOF) { for(i=0;i<n;i++) { scanf("%d",&m); //如果有成對的就刪除 ,沒有就插入,最後剩的那一個一定是不成對的那一個 if(a.find(m)==a.end()) { a.insert(m); } else a.erase(m); } printf("%d\n",*a.begin()); //返回剩下的那一個數(加*是因為begin()返回的是地址) a.clear(); } return 0; }
最後更新:2017-04-03 12:55:38