2019騰訊校招實習筆試題打怪獸

2021-09-17 03:58:43 字數 1396 閱讀 8037

小q打算穿越怪獸谷,他不會打怪,但是他有錢。

他知道,只要給怪獸一定的金幣,怪獸就會一直護送著他出谷。

在谷中,他會依次遇見n只怪獸,每只怪獸都有自己的武力值和要「賄賂」它所需的金幣數。

如果小q沒有「賄賂」某只怪獸,而這只怪獸「武力值」又大於護送他的怪獸武力之和,這只怪獸就會攻擊他。

小q想知道,要想成功穿越怪獸谷而不被攻擊,他最少要準備多少金幣。

輸入格式

第一行包含整數n,表示怪獸的數量。

第二行包含n個整數d1,d2,…,dnd1,d2,…,dn,表示每只怪獸的武力值。

第三行包含n個整數p1,p2,…,pnp1,p2,…,pn,表示收買n只怪獸所需的金幣數。

輸出格式

輸出乙個整數,表示所需最小金幣數。

資料範圍

1≤n≤501≤n≤50,

1≤di≤10121≤di≤1012,

1≤pi≤21≤pi≤2

輸入樣例1:

3

8 5 10

1 1 2

輸出樣例1:

2
輸入樣例2:

4

1 2 4 8

1 2 1 2

輸出樣例2:

6
這道題目怪獸的武力值比較大,要用longlong 來存,所以如果用dp[i][j] 表示前i個怪獸物理值為j所用的金幣數,是非常大的狀態。

而金幣數不是1就是2,所以用dp[i][j]表示前i個怪獸,用j個金幣時的最大武力值,那麼有如下關係

dp[i][j] = max(dp[i-1][j],dp[i-1][j-p[i]] + d[i]])   前面成立的條件是dp[i-1][j] >= d[i] , 後面成立的條件是j>=p[i] 

這裡要注意,不是所有的狀態都能存在的,不存在的狀態用dp[i][j] = -1 表示

最後的答案就是dp[n][j], j是第乙個不為-1的數

首先先把所有的dp設為-1,dp[0][0]=0 開始遞推。

怪獸的編號從1到n

#include #include #include using namespace std;

const int n = 60;

int main()

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

dp[0][0] = 0;

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

} int res = 0;

for (int i = 1; i <= 2*n; i++)

} cout << res << endl;

return 0;

}

2019校招實習筆試彙總

mark下遇到的筆試題吧 招行演算法 同學遇到的題,筆試後交流了下思路,由於a範圍比較小,所以可以暴力 搜尋剪枝 加用集合和字典優化。複雜度大概o n logn 有n種不同的化學試劑。第i種有ai公升。每次實驗都要把所有的化學試劑混在一起,但是這些試劑的量一定要相等。所以現在的首要任務是把這些化學試...

2020 360實習校招演算法筆試題

使用python3 題目描述 有一種特殊的dna,僅僅由核酸a和t組成,長度為n,順次連線。科學家有一種新的手段,可以改變這種dna。每一次,科學家可以交換該dna上兩個核酸的位置,也可以將某個特定位置的核酸修改為另一種核酸。現在有乙個dna,科學家希望將其改造成另一種dna,希望你計算最少的操作次...

2017騰訊校招暑期實習生筆試題3

小q今天在上廁所時想到了這個問題 有n個數,兩兩組成二元組,差最小的有多少對呢?差最大呢?輸入包含多組測試資料。小q今天在上廁所時想到了這個問題 有n個數,兩兩組成二元組,差最小的有多少對呢?差最大呢?輸入描述 輸入包含多組測試資料。對於每組測試資料 n 本組測試資料有n個數 a1,a2 an 需要...