NOIP模擬賽 最佳組合

2022-05-26 19:24:11 字數 1157 閱讀 2119

\(bzeroth\) 大陸最終還是覆滅了,所以你需要為地災軍團服務了。

地災軍團軍師黑袍不擅長寫題面,所以你只需要看簡化版的題意即可。

給定 \(3\) 個長度均為 \(n\) 的正整數序列 \(a\) 、\(b\) 、\(c\) ,要求從三個序列中分別取出 \(3\) 個數 \(a_i\) 、\(b_j\) 、\(c_k\) ,使得 \(| c_k - b_j | + | c_k - a_i | + | b_j - a_i |\) 最小。

第一行乙個正整數 \(n\) 。

第二行 \(n\) 個正整數,第 i 個數為 \(a_i\) 。

第三行 \(n\) 個正整數,第 i 個數為 \(b_i\) 。

第四行 \(n\) 個正整數,第 i 個數為 \(c_i\) 。

輸出\(| c_k - b_j | + | c_k - a_i | + | b_j - a_i |\) 的最小值。

3

170 180 190

195 185 175

180 160 200

10
$ n \leq 152501 $

先對\(a,b,c\) 陣列排序,然後列舉\(a\) 中的元素,很顯然當\(b,c\) 陣列中的數與\(a_i\) 相差最小時答案最小,所以我們二分出\(b\) ,\(c\) 陣列中\(a_i\) 的位置,然後算一算更新答案即可。

#include#include#include#include#include#includeusing namespace std;

typedef long long ll;

typedef pairpii;

#define mem(a,b) memset(a,b,sizeof(a))

inline int read()

while(isdigit(c))

return x*f;

}const int maxn=152510,oo=2147483647;

int n,a[maxn],b[maxn],c[maxn];

ll ans=oo;

bool judge(int k)

printf("%lld",ans);

return 0;

}

NOIP模擬題 最佳旅行

description bsny在杭州旅行,想去 n 個景點,於是他找來 n個導遊,每個導遊負責帶bsny去乙個景點玩一天,因此需要 n 個導遊。這個 n個導遊對於 n 個景點有不同的熟悉度和喜愛度。為了旅遊愉快,bsny想盡量讓每個導遊可以去熟悉度和喜愛度最高的景點,但顯然無法滿足所有導遊,因為b...

noip模擬賽 密碼

表示沒看懂演算法3 問題描述 有壓迫,就有反抗。mored的寵物在法庭的幫助下終於反抗了。作為乙隻聰明的寵物,他打算把魔法使mored的魔法書盜去,奪取mored的魔法能力。但mored怎麼會讓自己的魔法書輕易地被盜取?mored在魔法書上設定了乙個密碼鎖,密碼鎖上有乙個問題。施以斯臥鋪魔法吧,你有...

NOIP模擬賽 老師

題目描述 一座有n層的教學樓裡有一些學生,第i 0 i n 層有studentsi個學生。你被給定了乙個數k,如果第i層有x個學生,那麼這一層需要 x k 個老師。你可以調整每個學生的樓層,但是每個學生至多只能調整一層,就是說第i層的學生只能去第i 1層 如果有的話 第i層 第i 1層 如果i 1 ...