偶像的條件

2021-08-20 19:26:02 字數 1379 閱讀 9064

/*

描述小hi的學校正面臨著廢校的大危機。面對學校的危機,小hi同學們決定從abc三個班中各挑出一名同學成為偶像。

成為偶像團體的條件之一,就是3名團員之間的身高差越小越好。

已知abc三個班同學的身高分別是a1..an, b1..bm 和 c1..cl。請你從中選出3名同學ai, bj, ck使得d=|ai-bj|+|bj-ck|+|ck-ai|最小。

輸入第一行包含3個整數,n, m和l。

第二行包含n個整數,a1, a2, ... an。(1 <= ai <= 100000000)

第三行包含m個整數,b1, b2, ... bm。(1 <= bi <= 100000000)

第四行包含l個整數,c1, c2, ... cl。(1 <= ci <= 100000000)

對於30%的資料, 1 <= n, m, l <= 100

對於60%的資料,1 <= n, m, l <= 1000

對於100%的資料,1 <= n, m, l <= 100000

輸出輸出最小的d。

樣例輸入

3 3 3

170 180 190

195 185 175

180 160 200

樣例輸出

10 思路:

方法1:暴力破解

偽**如下:

ans=max_int;

for i=1...n

for j=1...m

for k=1...l

s=|ai-bi|+|bj-cj|+|ck-ak|;

if(s#include using namespace std;

int n, m, l;

int a[100010], b[100010], c[100010];

long long ans;

void test(long long x,long long y,long long z)

}int main()

for (int i = 1; i <= m; i++)

for (int i = 1; i <= l; i++)

a[0] = b[0] = c[0] = -1000000000;

a[n + 1] = b[n + 1] = c[n + 1] = 1000000000;

sort(a, a + n + 1);

sort(b, b + n + 1);

sort(c, c + n + 1);

ans = 10000000000;

for (int i = 1, j = 0, k = 0; i <= n;i++)

cout << ans << endl;

return 0;

}

Hihocoder 1514 偶像的條件

解題思路 其實就是隨意搞下就行。求 a b b c c a 的最小值 顯然列舉a,然後二分整個找到離a最近的b,再二分整個找到離a最近的c和離b最近的c 比較一下誰最近,就可以o nlogn 搞出來了。include include include include include include i...

HihoCoder 1514 偶像的條件

時間限制 10000ms 單點時限 1000ms 記憶體限制 256mb 小hi的學校正面臨著廢校的大危機。面對學校的危機,小hi同學們決定從abc三個班中各挑出一名同學成為偶像。成為偶像團體的條件之一,就是3名團員之間的身高差越小越好。已知abc三個班同學的身高分別是a1.an,b1.bm 和 c...

HihoCoder 1514 偶像的條件(二分法)

小hi的學校正面臨著廢校的大危機。面對學校的危機,小hi同學們決定從abc三個班中各挑出一名同學成為偶像。成為偶像團體的條件之一,就是3名團員之間的身高差越小越好。已知abc三個班同學的身高分別是a1.an,b1.bm 和 c1.cl。請你從中選出3名同學ai,bj,ck使得d ai bj bj c...