第165場周賽實錄(數學題 動態規劃 未完成)

2021-10-01 07:01:48 字數 4031 閱讀 6547

難度:中等

聖誕活動預熱開始啦,漢堡店推出了全新的漢堡**。為了避免浪費原料,請你幫他們制定合適的製作計畫。

給你兩個整數 tomatoslices 和 cheeseslices,分別表示番茄片和乳酪片的數目。不同漢堡的原料搭配如下:

請你以 [total_jumbo, total_small]([巨無霸漢堡總數,小皇堡總數])的格式返回恰當的製作方案,使得剩下的番茄片 tomatoslices 和乳酪片 cheeseslices 的數量都是 0。

如果無法使剩下的番茄片 tomatoslices 和乳酪片 cheeseslices 的數量為 0,就請返回 。

示例 1:

輸入:tomatoslices = 16, cheeseslices = 7

輸出:[1,6]

解釋:製作 1 個巨無霸漢堡和 6 個小皇堡需要 41 + 26 = 16 片番茄和 1 + 6 = 7 片乳酪。不會剩下原料。

示例 2:

輸入:tomatoslices = 17, cheeseslices = 4

輸出:解釋:只製作小皇堡和巨無霸漢堡無法用光全部原料。

示例 3:

輸入:tomatoslices = 4, cheeseslices = 17

輸出:解釋:製作 1 個巨無霸漢堡會剩下 16 片乳酪,製作 2 個小皇堡會剩下 15 片乳酪。

示例 4:

輸入:tomatoslices = 0, cheeseslices = 0

輸出:[0,0]

示例 5:

輸入:tomatoslices = 2, cheeseslices = 1

輸出:[0,1]

解決方案:

class

solution

:def

numofburgers

(self, tomatoslices:

int, cheeseslices:

int)

-> list[

int]

: res =

if tomatoslices%2!=

0:return res

x = tomatoslices//

2- cheeseslices

y =2* cheeseslices - tomatoslices//

2if x <

0or y <0:

return res

return res

執行用時

記憶體消耗

語言64 ms

13.7 mb

python3

難度:中等

給你乙個 m * n 的矩陣,矩陣中的元素不是 0 就是 1,請你統計並返回其中完全由 1 組成的 正方形 子矩陣的個數。

示例 1:

輸入:matrix =

[[0,1,1,1],

[1,1,1,1],

[0,1,1,1]

]輸出:15

解釋:邊長為 1 的正方形有 10 個。

邊長為 2 的正方形有 4 個。

邊長為 3 的正方形有 1 個。

正方形的總數 = 10 + 4 + 1 = 15.

示例 2:

輸入:matrix =

[[1,0,1],

[1,1,0],

[1,1,0]

]輸出:7

解釋:邊長為 1 的正方形有 6 個。

邊長為 2 的正方形有 1 個。

正方形的總數 = 6 + 1 = 7.

解決方案:

class

solution

:def

countsquares

(self, matrix: list[list[

int]])

->

int:

n=len(matrix)

m=len(matrix[0]

) ans=

0for i in

range(0

,m):

ans+=matrix[0]

[i]for i in

range(1

,n):

ans+=matrix[i][0

]for i in

range(1

,n):

for j in

range(1

,m):

if matrix[i]

[j]:

matrix[i]

[j]=

min(matrix[i-1]

[j-1

],matrix[i]

[j-1

],matrix[i-1]

[j])+1

ans+=matrix[i]

[j]return ans

執行用時

記憶體消耗

語言864 ms

16 mb

python3

難度:困難

給你乙個由小寫字母組成的字串 s,和乙個整數 k。

請你按下面的要求分割字串:

請返回以這種方式分割字串所需修改的最少字元數。

示例 1:

輸入:s = 「abc」, k = 2

輸出:1

解釋:你可以把字串分割成 「ab」 和 「c」,並修改 「ab」 中的 1 個字元,將它變成回文串。

示例 2:

輸入:s = 「aabbc」, k = 3

輸出:0

解釋:你可以把字串分割成 「aa」、「bb」 和 「c」,它們都是回文串。

示例 3:

輸入:s = 「leetcode」, k = 8

輸出:0

解決方案(來自網友):

class

solution

:def

palindromepartition

(self, s:

str, k:

int)

->

int:

n=len(s)

cost=[[

0]*n for _ in

range

(n)]

t=0for t in

range(1

,n):

for i in

range(0

,n-t)

: j=i+t

cost[i]

[j]=cost[i+1]

[j-1]+

(s[i]

!=s[j]

) dp=[[

0]*k for _ in

range

(n)]

for i in

range

(n):

dp[i][0

]=cost[0]

[i]for i in

range(0

,n):

for j in

range(1

,k):

m=float

("inf"

)for l in

range

(j-2

,i):

m=min(m,cost[l+1]

[i]+dp[l]

[j-1])

dp[i]

[j]=m

return dp[-1

][-1

]

力扣第165場周賽

a 和 b 在乙個 3 x 3 的網格上玩井字棋。井字棋遊戲的規則如下 玩家輪流將棋子放在空方格 上。第乙個玩家 a 總是用 x 作為棋子,而第二個玩家 b 總是用 o 作為棋子。x 和 o 只能放在空方格中,而不能放在已經被占用的方格上。只要有 3 個相同的 非空 棋子排成一條直線 行 列 對角線...

ACM Fjut周賽某數學題

acm 數學魔鬼 令 s sum a therefore a s s n geq 2 normalsize sum a cdot a frac normalsizes s s frac because left right 單調遞減,且恆大於零 therefore lim frac 存在,記為a a...

中大周賽第7場 HASH 簡單題

description input on the first line one positive number the number of test cases,at most 100.after that per test case output per test case sample inpu...