最近做了一道題,用到了c++的stl的map
map是一種集合 裡面的單位是pair類 pair類有兩個成員變數 乙個是first 另乙個是second
map根據first排序,不允許多個元素關鍵字相同
map支援以logn的複雜度插入和查詢元素,她是基於平衡二叉樹的一種操作
一般有如下成員函式
find
lower_bound 查詢下界
iterator lower_bound(const key & val) 查詢乙個最大的位置 it 使得 [ begin(), it ) 中所有元素的關鍵字都比val小
注意這裡返回的是迭代器
還有就是乙個pair怎麼生成並且插入呢
用make_pair( first, second)函式
還有就是宣告map的迭代器的操作
詳情見**
題意描述
描述為了迎接08年的奧運會,讓大家更加了解各種格鬥運動,facer新開了一家熱血格鬥場。格鬥場實行會員制,但是新來的會員不需要交入會費,而只要同一名老會員打一場表演賽,證明自己的實力。
我們假設格鬥的實力可以用乙個正整數表示,成為實力值。另外,每個人都有乙個唯一的id,也是乙個正整數。為了使得比賽更好看,每乙個新隊員都會選擇與他實力最為接近的人比賽,即比賽雙方的實力值之差的絕對值越小越好,如果有兩個人的實力值與他差別相同,則他會選擇比他弱的那個(顯然,虐人必**好)。
不幸的是,facer一不小心把比賽記錄弄丟了,但是他還保留著會員的註冊記錄。現在請你幫facer恢復比賽紀錄,按照時間順序依次輸出每場比賽雙方的id。
輸入第一行乙個數n(0 < n <=100000),表示格鬥場新來的會員數(不包括facer)。以後n行每一行兩個數,按照入會的時間給出會員的id和實力值。一開始,facer就算是會員,id為1,實力值1000000000。輸入保證兩人的實力值不同。
輸出n行,每行兩個數,為每場比賽雙方的id,新手的id寫在前面。
樣例輸入
32 13 3
4 2
樣例輸出
2 1**如下 //3 24 2
#include "stdafx.h"
#include#include#includeusing namespace std;
int n;
mapm;
int id, val;
int main()
if (p1 == m.begin())
p2 = p1;
p2--;
if ((val - p2->first) <= (p1->first - val))
else
}return 0;}
熱血格鬥場和冷血格鬥場
好的吧,過去很久的題目了,現在補一發。跟格鬥場有仇。每個都提交了十幾次。先摘一下題目。5 熱血格鬥場 描述 為了迎接08年的奧運會,讓大家更加了解各種格鬥運動,facer新開了一家熱血格鬥場。格鬥場實行會員制,但是新來的會員不需要交入會費,而只要同一名老會員打一場表演賽,證明自己的實力。我們假設格鬥...
C 熱血格鬥場(STL map pair
1.題目 描述 為了迎接08年的奧運會,讓大家更加了解各種格鬥運動,facer新開了一家熱血格鬥場。格鬥場實行會員制,但是新來的會員不需要交入會費,而只要同一名老會員打一場表演賽,證明自己的實力。我們假設格鬥的實力可以用乙個正整數表示,成為實力值。另外,每個人都有乙個唯一的id,也是乙個正整數。為了...
openjudge 4 熱血格鬥場
總時間限制 1000ms 記憶體限制 65536kb 描述 為了迎接08年的奧運會,讓大家更加了解各種格鬥運動,facer新開了一家熱血格鬥場。格鬥場實行會員制,但是新來的會員不需要交入會費,而只要同一名老會員打一場表演賽,證明自己的實力。我們假設格鬥的實力可以用乙個正整數表示,成為實力值。另外,每...