商湯科技2018校招研究員筆試第一場

2021-09-11 20:26:48 字數 2713 閱讀 3483

鐵柱在研究乙個區域的小黃車使用分布。他得到了伺服器上最近10000個使用者的二維位置,現在他想把這些使用者聚成k(k<10) 組,每組有乙個中心c_i。他想評價聚類演算法的好壞,把每個資料點到中心的l1距離作為總距離。即

d = sum_j || x_j - c( x_j ) ||_1

其中c(x_j)代表x_j所屬的中心。現在他想找乙個盡可能好的聚類演算法,使得這個總距離盡可能小。要求你輸出k個中心的位置(順序不限)

比如如果有5個資料點

1 1

1 21 4

3 43 5

給定2個中心1 2, 3 4的話

總距離就是1+0+2+0+1 = 4

kmeans,只過了 23%的樣例

points =

point_num =

10000

max_iter =

100k =

int(

input()

)for i in

range

(point_num)

: line =

input()

.strip(

).split()[

float

(line[0]

),float

(line[1]

)])

centers =

[points[i]

for i in

range

(k)]

label =[-

1for i in

range

(10000)]

flag =

true

defdistance

(p1, p2)

:return

abs(p1[0]

-p2[0]

)+abs(p1[1]

-p2[1]

) now_iter =

0while now_iter < max_iter:

now_iter +=

1 group =[[

]for i in

range

(k)]

for i in

range

(point_num)

: min_dis, target =

999999,-

1for center_ind, center in

enumerate

(centers)

: dis = distance(center, points[i]

)if dis< min_dis:

min_dis, target = dis, center_ind

group[target]

)for i in

range

(k):

ps = group[i]

xs =

[p[0

]for p in ps]

ys =

[p[1

]for p in ps]

x =sum(xs)

/len

(xs)

y =sum(ys)

/len

(ys)

centers[i]

=[x, y]

for i in

range

(k):

print

('{} {}'

.format

(centers[i][0

], centers[i][1

]))

研究地球空間科學的永強想研究海岸線的長度和海岸線面積之間的關係,為此他找來了很多航拍影象。在航拍影象上利用影象分割的方法,把影象的每個畫素標記成陸地(1)和水面(0)。

現在永強想知道每張圖中陸地部分的面積。

已知每張圖最底部的一條邊都是陸地,並且在一張圖上陸地都是四鄰域聯通的。

但是永強發現分割的結果有很多的雜訊,於是他定義了如下規則試圖去除雜訊:

a) 如果乙個水面區域被陸地包圍,則將這個區域記為陸地;

b) 在a的基礎上如果乙個陸地區域不和底邊的陸地相連,那麼這是乙個島嶼,不計入陸地的面積。

記憶體超了,只過了92%的資料,懶得進行優化了,思路應該是正確的。

#include

using namespace std;

int m, n, land=0;

int board[

1000][

1000];

void

label

(int x,

int y,

int raw,

int color)

intmain()

}// 將海洋連線到一起,且全標成-2

for(

int col=

0;col)// 標記兩側的海洋

for(

int row=

0;row)// 其餘的海洋是地中海,標記為陸地

for(

int i=

0;i// 計算陸地面積。此時海中地已經被-1所包圍,所以不用擔心會計算在內

land =0;

for(

int col=

0;colcout << land << endl;

return0;

}

觸寶科技2018校招筆試題

大概的思路就是 預設這個距離 最大兩點的距離 函式是時間變數的乙個凸函式 我猜的,具體證明不會 凸函式找最大值,用三分法就可以了。然後就三分時間則可以求得答案 include include include include using namespace std const int mx 308 c...

廣聯達2018校招筆試題

廣聯達現場筆試,有一種難受叫做,沒時間了,也沒紙了,但是卻發現了程式的錯誤。第一題 輸入乙個n,輸出1 2 3 4 5 6 7.n的值。int fun int num return sum void main void main int num cin num int len sizeof ar s...

面試 曠視科技 CV研究員

可能因為報的是研究員崗,所以面試的問題都很數學,太難了。問題1 計算n個矩陣做乘法的時間複雜度。矩陣大小分別為 a0,a1 a1,a2 an 1,an 回答 a 0 a 1 a 2 a 0 a 2 a 3 a 0 a a n 問題2 這裡面會存在乙個問題,如果更換乘法順序則會出現不同的計算複雜度,比...