洛谷題解 P1678 煩惱的高考志願

2021-10-05 23:49:57 字數 2010 閱讀 3075

洛谷,

我的oj,

現有 m 所學校,每所學校預計分數線是 ai。有 n 位學生,估分分別為 bi​。

根據 n 位學生的估分情況,分別給每位學生推薦一所學校,要求學校的預計分數線和學生的估分相差最小(可高可低,畢竟是估分嘛),這個最小值為不滿意度。求所有學生不滿意度和的最小值。

第一行讀入兩個整數 m,n。m 表示學校數,n 表示學生數。

第二行有 m 個數,表示 m 個學校的預計錄取分數。

第三行有 n 個數,表示 n 個學生的估分成績。

一行,為最小的不滿度之和。

4 3

513 598 567 689

500 600 550

32
m ≤ 100000

ai​ ≤ 10^6

n ≤ 100000

bi ​≤ 10^6

不需要分析,跳過。

根據輸入的樣例資料,我們知道一共有 4 所學校,學校的錄取分數分別為:513、598、567、689。一共有 3 名考生,高考的分數為:500、600、550。

第乙個考生的分數為 500,這個分數在所有高校錄取分數 513 以下,因此該學生的不滿意度為 513-500=13。

第二個考生的分數為 600,這個分數在所有高校錄取分數 598 和 689 之間,因此該學生的不滿意度有兩個,分別為 600-598=2 和 689-600=89,根據題意,我們取最小值。因此該學生的不滿意度為 600-598=2。

第三個考生的分數為 550,這個分數在所有高校錄取分數 513 和 567 之間,因此該學生的不滿意度有兩個,分別為 550-513=37 和 567-550=17,根據題意,我們取最小值。因此該學生的不滿意度為 567-550=17。

這三個學生的所有不滿度合計為:13+2+17=32。

ai​ ≤ 10^6,bi ​≤ 10^6。因此對應的分數我們使用 int 可以描述。

m ≤ 100000,n ≤ 100000。這樣極限資料應該是所有高校錄取分數都是 10^6,而考生分數是 0 分。這樣對應的最大值為 10^6*10^6=10^12,超過了 int 的範圍。所以答案需要用 long long 來描述。

從樣例資料分析中,我們可以看出,本題的核心就是根據每個學生的分數,找出比這個分數小的錄取分數的最大值和比這個分數大的錄取分數的最小值。既然是查詢問題,我們肯定可以使用二分查詢來實現,二分查詢的時間複雜度為 o(logn)。最多的資料為 1e5 個,因此可以滿足。

1、讀入資料。

2、對高校錄取分數進行排序。

3、應該是沒有必要進行出重,當然去重也是可以的。

4、對每個學生高考分數,在錄取分數中查詢左下界和右上界。

5、如果左下界不等於右上界,說明高考分數和某個學校的錄取分數相同。也就意味著這個學生的不滿度為 0。

6、如果左下界等於右上界,說明學生高考分數在兩個高校錄取分數之間。需要分類討論。分布右三種情況:一是小於高校錄取分數最小值,這個時候 lo=hi=0,那麼不滿值應該是(高校錄取分數最小值 - 高考分數);二是大於高校錄取分數最大值,這個時候 lo=hi=m,那麼不滿值應該是(高考分數 - 高校錄取分數最大值);三是在兩個高校錄取分數線之間,那麼不滿足應該右有兩個,即(高考分數 - 高校錄取分數[lo-1])和(高校錄取分數[hi] - 高考分數),我們取最小值即可。

根據上面的分析,我們知道核心就是找出考生分數在高校錄取分數的左下界(hi)和右上界(lo)。

/*

oj:luogu

題目:p1678 煩惱的高考志願

*/#include const int maxm = 1e5+2;

int a[maxm];//學校分數

const int maxn = 1e5+2;

int b[maxm];//學生分數

int main() else

}

}printf("%llu\n", ans);

return 0;

}

就是對 hi 和 lo 的值進行分類討論。

洛谷P1678 煩惱的高考志願

題目背景 計算機競賽小組的神牛v神終於結束了萬惡的高考,然而作為班長的他還不能閒下來,班主任老t給了他乙個艱鉅的任務 幫同學找出最合理的大學填報方案。可是v神太忙了,身後還有一群小姑娘等著和他約會,於是他想到了同為計算機競賽小組的你,請你幫他完成這個艱鉅的任務。題目描述 根據n位學生的估分情況,分別...

洛谷P1678 煩惱的高考志願

題目背景 計算機競賽小組的神牛v神終於結束了萬惡的高考,然而作為班長的他還不能閒下來,班主任老t給了他乙個艱鉅的任務 幫同學找出最合理的大學填報方案。可是v神太忙了,身後還有一群小姑娘等著和他約會,於是他想到了同為計算機競賽小組的你,請你幫他完成這個艱鉅的任務。題目描述 根據n位學生的估分情況,分別...

洛谷P1678 煩惱的高考志願

計算機競賽小組的神牛v神終於結束了萬惡的高考,然而作為班長的他還不能閒下來,班主任老t給了他乙個艱鉅的任務 幫同學找出最合理的大學填報方案。可是v神太忙了,身後還有一群小姑娘等著和他約會,於是他想到了同為計算機競賽小組的你,請你幫他完成這個艱鉅的任務。題目描述 現有 m m 100000 所學校,每...