題目大意: 說少林寺乙個乙個來**,每次來乙個要找乙個實力最相近的人和他打一場,輸出每次比賽的人,先輸出新來的,後輸出功力最相近的,如果有兩個人一樣相近,就取功力比較低的那位(so sweeeeeet!)。
思路:其實就是乙個排序查詢+插入維護的問題,但是資料比較大,一看就知道要用log的時間去查詢和維護,於是自然想到了二叉平衡樹,map容器的底層就是利用類似的方法實現的。呼叫stl寫出來會比較簡單。
具體做法,每次出現乙個**,插入map,再用迭代器找出來,由於map容器自動排序了,++和--可以得到離他最近的兩個了(也不與一定是最近的兩個,應該說比他小的最近和比他大的最近的兩個)……比較一下誰合適就好了。
code:
#include#include#includeusing namespace std;
int main()
else
else
printf("%d %d\n",a,it->second);}}
}}
}
HDU4585 樹狀陣列 STL
題意 有n 1個僧侶,然後1號已經在塔里了,能力值是1e9,現在依次給你兩個數,第乙個代表標號,第二個代表能力值,每次挑乙個在塔里的能力最接近的跟她打,如果能力相同的取小,然後把它扔進塔里 每次輸出兩個標號,乙個舊的,乙個新的。思路 當時就感覺很水,所以做著做著就 變成了,離散化能力值,然後利用樹狀...
hdu4585 平衡樹解法
平衡樹板子 找出前驅後繼節點比較一下 include include include include include include include include include include includeusing namespace std define ll long long cons...
HDU4585 Shaolin map的經典運用
題意大意 很多人想進少林寺,少林寺最開始只有乙個和尚,每個人有有乙個武力值,若這個人想進少林,必須和比他先進去的人比武並且武力值最接近他的比武,如果有相同的則選擇武力值比他小的,問當他進去的時候要和哪個和尚比武。思路 正常情況暴力,n 100000,呵呵。n n的操作肯定不行的,最少要優化到nlog...