Đang trong giờ thi mà lại đưa hint vậy bác

counter theo k thì ăn TLEGiải câu 3 dùng set thì bị memory lồi mồm.
Còn 15p nữa hết contest mà chỉ có 600 người giải dc Q3![]()
K lớn quá phải greedy thôi chứ mình ko nghĩ là optimize được bằng set đâuGiải câu 3 dùng set thì bị memory lồi mồm.
Còn 15p nữa hết contest mà chỉ có 600 người giải dc Q3![]()

Sorry bác để em xóa :v Bác cũng xóa quotes của bác nhé :vĐang trong giờ thi mà lại đưa hint vậy bác![]()
Bài đó dùng dp mà.đi đọc sol q4, bên cạnh các thể loại segment tree thì em thấy có mấy thánh cài dp đơn giản vãi @@
class Solution:
def minimumValueSum(self, nums: List[int], andValues: List[int]) -> int:
@cache
def dfs(idx_nums = 0, idx_values = 0, prev_val = -1):
if idx_nums == len(nums) or idx_values == len(andValues):
return 0 if (idx_nums == len(nums) and idx_values == len(andValues)) else -1
val = nums[idx_nums] if prev_val == -1 else prev_val& nums[idx_nums]
ret1 = dfs(idx_nums + 1, idx_values, val)
ret2 = ret1
if val == andValues[idx_values]:
ret2 = dfs(idx_nums + 1, idx_values + 1, -1)
if ret2 >= 0:
ret2 += nums[idx_nums]
if ret1 == -1 and ret2 == -1:
return -1
if ret1 == -1:
return ret2
if ret2 == -1:
return ret1
return min(ret1, ret2)
return dfs()
nãy em cứ sợ tle nên không nghĩ ra cài dp đơn giản như nàyBài đó dùng dp mà.
Code của t đây, hơi rác nhưng chạy đc,
Python:class Solution: def minimumValueSum(self, nums: List[int], andValues: List[int]) -> int: @cache def dfs(idx_nums = 0, idx_values = 0, prev_val = -1): if idx_nums == len(nums) or idx_values == len(andValues): return 0 if (idx_nums == len(nums) and idx_values == len(andValues)) else -1 val = nums[idx_nums] if prev_val == -1 else prev_val& nums[idx_nums] ret1 = dfs(idx_nums + 1, idx_values, val) ret2 = ret1 if val == andValues[idx_values]: ret2 = dfs(idx_nums + 1, idx_values + 1, -1) if ret2 >= 0: ret2 += nums[idx_nums] if ret1 == -1 and ret2 == -1: return -1 if ret1 == -1: return ret2 if ret2 == -1: return ret1 return min(ret1, ret2) return dfs()

Bài đó dùng dp mà.
Code của t đây, hơi rác nhưng chạy đc,
Python:class Solution: def minimumValueSum(self, nums: List[int], andValues: List[int]) -> int: @cache def dfs(idx_nums = 0, idx_values = 0, prev_val = -1): if idx_nums == len(nums) or idx_values == len(andValues): return 0 if (idx_nums == len(nums) and idx_values == len(andValues)) else -1 val = nums[idx_nums] if prev_val == -1 else prev_val& nums[idx_nums] ret1 = dfs(idx_nums + 1, idx_values, val) ret2 = ret1 if val == andValues[idx_values]: ret2 = dfs(idx_nums + 1, idx_values + 1, -1) if ret2 >= 0: ret2 += nums[idx_nums] if ret1 == -1 and ret2 == -1: return -1 if ret1 == -1: return ret2 if ret2 == -1: return ret1 return min(ret1, ret2) return dfs()

T đọc bài 3 lần đầu thấy k lớn quá, k có ý tưởng để giải nhảy luôn qua Q4,Thấy AC Q4 thấp quá ko đi làm, thấy bài 4 xài DP còn dễ thở hơn bài 3![]()
. Hi vọng lên đc knight, 
Toy thiếu mấy điểm lên knight mà mất mẹ 30 ranks contest này rồi, cay thậtT đọc bài 3 lần đầu thấy k lớn quá, k có ý tưởng để giải nhảy luôn qua Q4,. Hi vọng lên đc knight,
![]()

tham gia nhưng chỉ giải dc mấy câu 3-4 pointNay vướng hẹn không tham gia được contest. Các thím chinh chiến kinh thặc sự![]()
May qúa, sáng em bận việc nên không tham giasáng ra gặp 2 bài hard, không làm được giờ chán không muốn làm gì nữa![]()
Tuyệt cmn vời
