微軟筆試題 highways

2022-04-28 16:33:07 字數 1923 閱讀 1733

題目大意

題目分析

所以,只需要記錄每個終點有車到達的最大的時間即可。

實現(c++)

#define _crt_secure_no_warnings	

#include#include#includeusing namespace std;

#define max_car_num 1005

/*此題採用模擬的方法來解決,對於每輛車都有乙個終點,題目也需要我們求出每輛車到達它

的終點的最短時間。但是在車行進的過程中,可能會由於其他車的阻擋而無法始終以最大速度行進,

這需要我們知道每輛車在什麼時間段可以最大速度行進,什麼時間段只能緊貼著前車行進。這樣來解決就

比較麻煩,可以轉換一下:

(1)由於車道為單向,因此後車不會對前面的車產生影響,而後車受到前面車的影響。因此將車按照起始位置進行

排序,然後按照從前向後的順序確定每輛車到達其終點的順序。

(2)因為考慮車a時,車a前面的車會對車a造成影響,而且影響會在前面的某車b到達車b的終點之後結束。因此,

所有車的終點,都應該被視為乙個重要因素,所以,儲存車a前面的所有車到達車a前面的那些所有終點的時間。

(3)再考慮一下,發現不需要儲存a前面所有車b1,b2...到達a前面所有終點fi, fi+1....的時間。我們先對a前面的終點排序,

從a出發到達那些終點肯定是按照從近到遠的順序到達。我們按照模擬的方法,從近到遠分階段考察a到達fi, fi+1,fi+2..的時間,

考慮a從fj到fj+1的時間,因為考慮a之前,已經獲得了a前面的那些車到達fj+1的時間,此時,我們需要知道的是a前面的那些車

到達fj的最大的時間m,若a以全速從fj到達fj+1的時間(記錄的是從a的起點到達fj+1的時間)大於m,則說明a的速度不夠,否則說明

a的前面的車阻擋a。兩種情況下,更新 m,以及a到達fj+1的時間。當a到達其終點a.end的時候,就記錄a到達的時間,該時間

就是a到達的最短時間。

所以,只需要記錄每個終點有車到達的最大的時間即可。

*/int gendpoint[max_car_num]; //儲存各個終點的位置

double gmaxendtime[max_car_num];

int gcarindex[max_car_num];

struct car;

car gcars[max_car_num];

//用於對車的索引按照車的起點位置排序,

bool compare1(int index1, int index2)

//根據車a的起點,找到車a需要經過的那些終點的起始序號(終點經過排序)

int getendindex(int start, int n)

return beg;

}int main()

memset(gmaxendtime, 0, sizeof(gmaxendtime));

//對車的索引排序 gcarindex[0]表示起點最小的車在gcar中的位置,gcarindex[1]表示起點第二小的車在gcar中的位置

sort(gcarindex, gcarindex + n, compare1);

//對終點進行排序

sort(gendpoint, gendpoint + n);

for (int i = 0; i < n; i++)

//從前向後考慮

for (int i = n - 1; i >= 0; i--)

else

if (gcars[gcarindex[i]].end_index == index)

point = gendpoint[index];

} }for (int i = 0; i < n; i++)

return 0;

}

微軟筆試題 彙總

1.臨界變數critical section的概念 還有semaphore,thread類似的這些 程序進入臨界區的排程原則是 如果有若干程序要求進入空閒的臨界區,一次僅允許乙個程序進入。任何時候,處於臨界區內的程序不可多於乙個。如已有程序進入自己的臨界區,則其它所有試圖進入臨界區的程序必須等待。進...

微軟筆試題 zz

題 有12個球 上面標有1 12的號碼 一台天平稱 沒有砝碼的哦 其中有乙個球的重量和其他的不一樣 不知道是輕了,還是重了哦 稱三次,找出那個重量不同的球來 只能那台沒砝碼的天平稱和12個球本身來操作 正確答案是 1 從12個中任取8個,4對4 的稱,如平衡,則從剩下的4個中再任取2個,1對1的稱,...

微軟筆試題 Constraint Checker

include include include include include include include define imin numeric limits min define imax numeric limits max define fr i,n for int i 0 i cons...