好的吧,過去很久的題目了,現在補一發。跟格鬥場有仇。每個都提交了十幾次。
先摘一下題目。
5:熱血格鬥場一開始我是仿照郭神的學生資訊錄入和查詢系統那樣寫的,也就是每次迴圈一遍map找實力和它最接近的。然後發現理解錯了題目,id和入會時間無關,樣例資料太有迷惑性了。這樣就需要每次輸入都進行處理。其次就是,這樣時間會超。因此,我們不能採用又一重迴圈,而需要用stl中的lower_bound和upper_bound進行處理。描述
為了迎接08年的奧運會,讓大家更加了解各種格鬥運動,facer新開了一家熱血格鬥場。格鬥場實行會員制,但是新來的會員不需要交入會費,而只要同一名老會員打一場表演賽,證明自己的實力。
我們假設格鬥的實力可以用乙個正整數表示,成為實力值。另外,每個人都有乙個唯一的id,也是乙個正整數。為了使得比賽更好看,每乙個新隊員都會選擇與他實力最為接近的人比賽,即比賽雙方的實力值之差的絕對值越小越好,如果有兩個人的實力值與他差別相同,則他會選擇比他弱的那個(顯然,虐人必**好)。
不幸的是,facer一不小心把比賽記錄弄丟了,但是他還保留著會員的註冊記錄。現在請你幫facer恢復比賽紀錄,按照時間順序依次輸出每場比賽雙方的id。
輸入
第一行乙個數n(0 < n <=100000),表示格鬥場新來的會員數(不包括facer)。以後n行每一行兩個數,按照入會的時間給出會員的id和實力值。一開始,facer就算是會員,id為1,實力值1000000000。輸入保證兩人的實力值不同。
輸出
n行,每行兩個數,為每場比賽雙方的id,新手的id寫在前面。
樣例輸入
32 1
3 34 2
樣例輸出
2 13 2
4 2
但是還是寫掛了,也許晚上腦子不太清醒。
注意點是,如果返回的lower_bound是begin,那麼說明沒有比這個會員更菜的,它自己就是begin,那麼不需要比較直接輸出upper_bound,這其實是個很弱智的結論但是我當時傻了……可能兩種思路一下沒轉換過來。
然後我之前還加了個while……emmm不知道自己當時在幹啥。
最後ac**:
#include #include #include #include #include using namespace std;
class member ;
info data;
};typedef mapmap;
int main()
--pp1;
printf("%d %d\n", a.data.id, (abs(a.force - pp1->first) > abs(a.force - pp2->first) ? pp2->second : pp1->second));
} return 0;
}
3:冷血格鬥場先上ac**:總時間限制: 1000ms 記憶體限制: 65536kb
描述
為了迎接08年的奧運會,讓大家更加了解各種格鬥運動,facer新開了一家冷血格鬥場。格鬥場實行會員制,但是新來的會員不需要交入會費,而只要同一名老會員打一場表演賽,證明自己的實力。
我們假設格鬥的實力可以用乙個正整數表示,成為實力值,兩人的實力值可以相同。另外,每個人都有乙個唯一的id,也是乙個正整數。為了使得比賽更好看,每乙個新隊員都會選擇與他實力最為接近的人比賽,即比賽雙方的實力值之差的絕對值越小越好,如果有多個人的實力值與他差別相同,則他會選擇id最小的那個。
不幸的是,facer一不小心把比賽記錄弄丟了,但是他還保留著會員的註冊記錄。現在請你幫facer恢復比賽紀錄,按照時間順序依次輸出每場比賽雙方的id。
輸入
第一行乙個數n(0 < n <=100000),表示格鬥場新來的會員數(不包括facer)。以後n行每一行兩個數,按照入會的時間給出會員的id和實力值。一開始,facer就算是會員,id為1,實力值1000000000。
輸出
n行,每行兩個數,為每場比賽雙方的id,新手的id寫在前面。
樣例輸入
32 3
3 14 2
樣例輸出
2 13 2
4 2
# include # include using namespace std;
typedef map mymap;
struct member ;
int main ()
else if (low == record.begin())
else if (low->first == a.force)
else
else if (a.force - low->first > up->first - a.force)
else
} if (record.find(a.force) != record.end())
else record.insert (mymap::value_type (a.force, a.id));
} return 0;
}
第一遍的時候我傻傻地保留了所有的資訊然後遍歷找到id最小的那個,然後掛了(其實感覺思路除了冗長一點之外沒什麼問題但是就是沒過)
第二遍的時候我在ac**的基礎上,把insert分散在了每個if-else那裡,把最後的if-else刪了,然後掛了。
好吧其實並不知道為什麼,從邏輯上看也沒有什麼問題……一篇不太合格的題解,放在這裡提醒自己**要簡潔,簡潔,簡潔好了。
冷血格鬥場
傳送門 冷血格鬥場 總時間限制 1000ms 記憶體限制 65536kb 描述 為了迎接08年的奧運會,讓大家更加了解各種格鬥運動,facer新開了一家冷血格鬥場。格鬥場實行會員制,但是新來的會員不需要交入會費,而只要同一名老會員打一場表演賽,證明自己的實力。我們假設格鬥的實力可以用乙個正整數表示,...
C 熱血格鬥場(STL map pair
1.題目 描述 為了迎接08年的奧運會,讓大家更加了解各種格鬥運動,facer新開了一家熱血格鬥場。格鬥場實行會員制,但是新來的會員不需要交入會費,而只要同一名老會員打一場表演賽,證明自己的實力。我們假設格鬥的實力可以用乙個正整數表示,成為實力值。另外,每個人都有乙個唯一的id,也是乙個正整數。為了...
openjudge 4 熱血格鬥場
總時間限制 1000ms 記憶體限制 65536kb 描述 為了迎接08年的奧運會,讓大家更加了解各種格鬥運動,facer新開了一家熱血格鬥場。格鬥場實行會員制,但是新來的會員不需要交入會費,而只要同一名老會員打一場表演賽,證明自己的實力。我們假設格鬥的實力可以用乙個正整數表示,成為實力值。另外,每...