陣列拆分 微軟2017筆試題

2021-09-16 14:08:06 字數 1244 閱讀 1299

給定乙個長度為n的陣列a=[a1,a2, … an],請你將a拆分成3段連續的子陣列:

a1, a2, … ap | ap+1, ap+2, … aq | aq+1,aq+2, … an

令s1 = a1 + a2 + … ap

s2 = ap+1 + ap+2 + … aq

s3 = aq+1 + aq+2 + … an

問有多少種劃分方案可以使得s1, s2, s3兩兩相差不超過1.

n <= 100000, -1000000 <= ai <= 1000000

暴力解法:

複雜度o(n^2)

#include

#include

/*測試樣例

53 2 1 0 236

3 2 1 0 2 12*/

using

namespace std;

const

int maxn =

100005

;typedef

long

long ll;

int s[maxn]

;int

main()

ll ans =0;

ll s1, s2, s3;

for(

int i =

1; i <= n -

2; i++)}

}}cout << ans << endl;

return0;

}

下面使用雜湊優化:

#include

#include

#include

using

namespace std;

const

int maxn =

100005

;typedef

long

long ll;

ll sum[maxn]

;int a[maxn]

;mapint> mmp;

intmain()

for(

int i =

1; i <= n; i++)if

(i < n)

} ll ans =0;

ll s3 =0;

for(

int i = n; i >

1; i--)}

} cout << ans << endl;

return0;

}

保衛方案(京東2017筆試題)

戰爭遊戲的至關重要環節就要到來了,這次的結果將決定王國的生死存亡,小b負責首都的防衛工作。首都位於乙個四面環山的盆地中,周圍的n個小山構成乙個環,作為預警措施,小b計畫在每個小山上設定乙個觀察哨,日夜不停的瞭望周圍發生的情況。一旦發生外地入侵事件,山頂上的崗哨將點燃烽煙,若兩個崗哨所在的山峰之間沒有...

北京雲端微服科技2017筆試題

一 選擇題 1 string str 以下哪種寫法較為合理 4個答案都對,答案不確定 a str.equals ydwf b ydwf equals str c if str null ydwf equals str d if str null str.equals ydwf 2 下列寫法正確的是 ...

微軟筆試題 彙總

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