三條面經題目

2021-10-06 01:30:43 字數 1741 閱讀 7744

第一題:有m個餐廳,其中抽n個改造成停車場,使每個餐廳到最近的停車場距離之和最小

定義:dp[i][j]表示前i個餐廳有j個停車場的

初始:cost[k][i]表示第k個餐廳到第i個餐廳只有1個停車場服務時的最小矩離和

dp[i][1]的就是cost[1][i],注意只有1個停車場時一定是取中位數的位置

遞堆:dp[i][j]=min(dp[i][j],dp[k-1][j-1]+cost[k][i])

前i個餐廳有j個停車場相當於前k-1個餐廳有j-1個停車場,然後第k到i個餐廳有1個停車場

優化:四邊形不等式優化,對k的遍歷可以加速,由o(mmn)降為o(mn)

第二題:找出陣列中的最長子區間,和為給定值k

例:[3,-2,-4,0,6,1],k=0

解:開map,key是字首和,val是下標,先壓入<0,-1>,表示下標-1沒有數時和就是0

到下標0位置,由於當前sum是3,要找區間和是0,則要找map有沒有字首和是3-0=3,但是沒有故跳過,壓入<3,0>

到下標1位置,由於當前sum是1,要找區間和是0,則要找map有沒有字首和是1-0=1,但是沒有故跳過,壓入<1,1>

到下標2位置,由於當前sum是-3,要找區間和是0,則要找map有沒有字首和是-3-0=-3,但是沒有故跳過,壓入<-3,2>

到下標3位置,由於當前sum是-3,要找區間和是0,則要找map有沒有字首和是-3-0=-3,有<-3,2>,得到區間[3,3],不用壓入

到下標4位置,由於當前sum是3,要找區間和是0,則要找map有沒有字首和是3-0=3,有<3,0>,得到區間[1,4],不用壓入

以下標5位置,由於當前sum是4,要找區間和是0,則要找map有沒有字首和是4-0=4,但是沒有故跳過,壓入<4,5>

結束,獲得最長子區間[1,4]

補充解釋為何下標3(下標4同理)不用壓入<3,3>:因為前面有<3,0>,取下標較小的就能獲得較長的區間

第三題:找到陣列中的最長子區間,和小於等於給定值k

例:[3,-2,-4,0,6],k=-2

解:開map,key是字首和,val是下標,先壓入<0,-1>,表示下標-1沒有數時和就是0

到下標0位置,由於當前sum是3,要找區間和小於等於-2,則要找map有沒有字首和是大於等於3-(-2)=5,但是沒有故跳過,壓入<3,0>

到下標1位置,由於當前sum是1,要找區間和小於等於-2,則要找map有沒有字首和是大於等於1-(-2)=3,有<3,0>,找到區間[1,1],不用壓入<1,1>【優化,見解釋】

到下標2位置,由於當前sum是-3,要找區間和小於等於-2,則要找map有沒有字首和是大於等於-3-(-2)=-1,有<3,0>與<0,-1>,找到區間[0,2],不用壓入<-3,2>

到下標3位置,由於當前sum是-3,要找區間和小於等於-2,則要找map有沒有字首和是大於等於-3-(-2)=-1,有<3,0>與<0,-1>,找到區間[0,3],不用壓入<-3,3>

到下標4位置,由於當前sum是3,要找區間和小於等於-2,則要找map有沒有字首和是大於等於3-(-2)=5,但是沒有故跳過,不用壓入,因為<3,0>比<3,4>有更小下標

結束,獲得最長子區間[0,3]

補充解釋為何不用壓入<1,1>:因為對比<3,0>,設現在要找map中找的字首和值是x,若1大於等於x,則3必然大於等於x,而<3,0>有更優的下標0,所以不用壓入<1,1>

同理,<-3,2>也不如<3,0>優,因此可以得到結論,壓入map的字首和值一定是單調遞增的,因為下標肯定不斷增,字首和若是有比以前小的,在選擇時一定不是最優

IT三條出路

隨著年齡的增長,it程式設計員該何去何從。程式設計師的困惑 我該何去何從 32歲的 ith 化名 已算是it行業的元老了。大學時代的他,有2 3的時間是在校園微機房裡度過的,當時,他瘋狂地迷上了電腦。大學畢業後,ith早早地被一家it業著名的跨國公司錄用,擔任程式設計師。剛進it行業時,ith有股火...

人生三條線

人生三條線 乙個關於禪的故事。乙個平庸的人去拜訪禪師,他問禪師 您說真的有命運嗎?是不是我這一輩子就注定窮困一生呢?有的,禪師就讓他伸出左手指給他看,說 你看清楚了,這條橫線叫 情線,這條斜線叫做事業線,另外一條豎線就是生命線。然後禪師又讓他跟自己做乙個動作,他的手慢慢的握起來,握的緊緊的,然後問這...

三條最短路

tower 題目描述 a去推塔。但是推第n座塔必須先推了第1 n 1座塔。為了加快速度a召喚出了b和c。求a和他的召喚獸們為了推完所有塔所經過的最短距離。輸入 第一行乙個數n,代表一共要去多少個城市。下面n 1 行,對於第 i 行,有 n i 個數,表示第 i 個城市分別和第i 1,i 2,i 3,...