HDU4585 Shaolin

HDU4585 Shaolin

題意

少林寺以武僧聞名,每年都有很多年輕人去少林寺出家。少林大師對一個年輕人的評價主要是看他對佛經的理解能力,但也要考慮他的打鬥技巧。當一個年輕人通過了所有的測試並被宣佈爲少林新和尚時,將會有一場戰鬥,作爲歡迎派對的一部分。每個和尚都有一個唯一的身份證和一個唯一的戰鬥等級,都是整數。新和尚必須與戰鬥等級最接近他的老和尚戰鬥。如果有兩個老和尚滿足這一條件,新和尚將採取一個誰的戰鬥等級低於他的。師傅是少林第一和尚,身份證是1,武功等級是1億,剛剛丟失了武功記錄。但他仍然記得誰先加入少林,誰後加入少林。請幫他找回打鬥記錄。

思路

set的二分查找(本來只想寫個水題,看一下我的碼代碼速度,結果wa了好幾發,難受死了)

代碼

#include<bits/stdc++.h>
using namespace std;
int main(){
    int n;
    while(~scanf("%d",&n)){
        if(n==0) break;
        set<pair<int ,int> > q;
        q.insert({1000000000,1});
        for(int i=1;i<=n;i++){
            int k,g;scanf("%d%d",&k,&g);
            pair<int,int> tmp={g,k}; 
            auto x=q.upper_bound(tmp);
            if(x==q.begin()){
                printf("%d %d\n",k,x->second);
            }
            else {
                auto y=x;
                int val1=x->first-g;
                y--;
                int val2=g-y->first;
                if(val1<val2){
                    printf("%d %d\n",k,x->second);
                }
                else {
                    printf("%d %d\n",k,y->second);
                }

            }
            q.insert({g,k});
        }
    }
    // system("pause");
    
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章