i-am-groot
Senior Member
nếu pass rồi có khi nó k rejudge đâuChắc nó rejudge cmnr rồi, nó accepted rồi nên mình ko sửa, nãy mình tính lộn time complexity đổi qua rolling hash mà éo kịp![]()

nếu pass rồi có khi nó k rejudge đâuChắc nó rejudge cmnr rồi, nó accepted rồi nên mình ko sửa, nãy mình tính lộn time complexity đổi qua rolling hash mà éo kịp![]()

vl leetcode nó ko rejudge, rank 263 thấy nhục quánếu pass rồi có khi nó k rejudge đâu![]()

Thấy nhục thì tuần này tự feed làm 1 bài thôi để trừ bù nào,vl leetcode nó ko rejudge, rank 263 thấy nhục quá![]()

Thấy nhục thì tuần này tự feed làm 1 bài thôi để trừ bù nào,![]()
cũng là 1 ý kiến hayNgày ngày ngồi cày các dạng thôi thímCảm giác như tụi kia nó thuộc hết giải thuật, vô là gõ ầm ầm thôi
Giờ phải học ntn vậy các fen, cắm đầu giải đề thấy vô vọng quá


mình ăn 1 bug do quên cái MOD, total 3 bugs cmnrclass Solution:
def subsequencePairCount(self, nums: List[int]) -> int:
MOD = 10**9 + 7
@lru_cache(None)
def dp(gcd1, gcd2, index):
if index == len(nums):
if gcd1 == -1 or gcd2 == -1:
return 0
return int(gcd1 == gcd2)
ans = 0
ans += dp(gcd1, gcd2, index + 1)
if gcd1 == -1:
ans += dp(nums[index], gcd2, index + 1)
else:
ans += dp(math.gcd(gcd1, nums[index]), gcd2, index + 1)
if gcd2 == -1:
ans += dp(gcd1, nums[index], index + 1)
else:
ans += dp(gcd1, gcd(gcd2, nums[index]), index + 1)
return ans%MOD
return dp(-1, -1, 0)%MOD
200^3 quá là nhỏ mà taclass Solution:
def subsequencePairCount(self, nums: List[int]) -> int:
MOD = 10**9 + 7
max_num = max(nums)
n = len(nums)
f = [[0] * (max_num + 1) for _ in range(max_num + 1)]
g = [[0] * (max_num + 1) for _ in range(max_num + 1)]
gcd_cache = dict()
@lru_cache(maxsize=None)
def find_gcd(i, j):
return math.gcd(i, j)
f[0][0] = 1
for k in range(n):
for i in range(max_num + 1):
for j in range(max_num + 1):
g[i][j] = f[i][j]
f[i][j] = 0
for i in range(max_num + 1):
for j in range(max_num + 1):
f[i][j] = (f[i][j] + g[i][j]) % MOD
set_a_gcd = find_gcd(i, nums[k])
f[set_a_gcd][j] = (f[set_a_gcd][j] + g[i][j]) % MOD
set_b_gcd = find_gcd(j, nums[k])
f[i][set_b_gcd] = (f[i][set_b_gcd] + g[i][j]) % MOD
res = 0
for gcd_ in range(1, max_num + 1):
res = (res + f[gcd_][gcd_]) % MOD
return res
Fence thử tìm cách convert qua c++ thử xem, bọn Leetcode này nó ghét python users lắmBài 3 e cũng dp nhưng bottom up sao nó lại TLE được nhể200^3 quá là nhỏ mà ta
Python:class Solution: def subsequencePairCount(self, nums: List[int]) -> int: MOD = 10**9 + 7 max_num = max(nums) n = len(nums) f = [[0] * (max_num + 1) for _ in range(max_num + 1)] g = [[0] * (max_num + 1) for _ in range(max_num + 1)] gcd_cache = dict() @lru_cache(maxsize=None) def find_gcd(i, j): return math.gcd(i, j) f[0][0] = 1 for k in range(n): for i in range(max_num + 1): for j in range(max_num + 1): g[i][j] = f[i][j] f[i][j] = 0 for i in range(max_num + 1): for j in range(max_num + 1): f[i][j] = (f[i][j] + g[i][j]) % MOD set_a_gcd = find_gcd(i, nums[k]) f[set_a_gcd][j] = (f[set_a_gcd][j] + g[i][j]) % MOD set_b_gcd = find_gcd(j, nums[k]) f[i][set_b_gcd] = (f[i][set_b_gcd] + g[i][j]) % MOD res = 0 for gcd_ in range(1, max_num + 1): res = (res + f[gcd_][gcd_]) % MOD return res
Vãi, thêmBài 3 e cũng dp nhưng bottom up sao nó lại TLE được nhể200^3 quá là nhỏ mà ta
Python:class Solution: def subsequencePairCount(self, nums: List[int]) -> int: MOD = 10**9 + 7 max_num = max(nums) n = len(nums) f = [[0] * (max_num + 1) for _ in range(max_num + 1)] g = [[0] * (max_num + 1) for _ in range(max_num + 1)] gcd_cache = dict() @lru_cache(maxsize=None) def find_gcd(i, j): return math.gcd(i, j) f[0][0] = 1 for k in range(n): for i in range(max_num + 1): for j in range(max_num + 1): g[i][j] = f[i][j] f[i][j] = 0 for i in range(max_num + 1): for j in range(max_num + 1): f[i][j] = (f[i][j] + g[i][j]) % MOD set_a_gcd = find_gcd(i, nums[k]) f[set_a_gcd][j] = (f[set_a_gcd][j] + g[i][j]) % MOD set_b_gcd = find_gcd(j, nums[k]) f[i][set_b_gcd] = (f[i][set_b_gcd] + g[i][j]) % MOD res = 0 for gcd_ in range(1, max_num + 1): res = (res + f[gcd_][gcd_]) % MOD return res
if g[i][j] == 0:
continue
Nó để n = 100 thì chắc pass, còn n = 200 thì hên xui lắmVãi, thêm
thì pass, sao time limit lại strict vậy nhỉPython:if g[i][j] == 0: continue

đọc thì thấy phải transform qua matrix gì lạ vle code ra solution ra Q3 khá nhanh, mà lỗi TLE xàm quá dỗi éo code tiếp nên chưa đọc Q4Nó để n = 100 thì chắc pass, còn n = 200 thì hên xui lắm
Kêu mình viết bottom up mình ko viết nổi, mà fen có làm đc q4 ko sao tụi q4 nó accepted nhiều thế nhỉđọc thì thấy phải transform qua matrix gì lạ vl


Sáng mình cũng động kinh q2 dịch lộn ancestor là hậu duệ làm ko làm đc Q2e code ra solution ra Q3 khá nhanh, mà lỗi TLE xàm quá dỗi éo code tiếp nên chưa đọc Q4
Vừa lên guardian nay lại xuống r
nay đc cộng ít điểm vừa đủ buổi sáng. Cái q2 contest lúc nào nó cũng trigger mình vl. Lần nào cũng rất vướng cái Q2 