thảo luận Leetcode + Codeforces, Competitive programming contest. Đường tới Guardian + Candidate Master.

  • Người tạo chủ đề Người tạo chủ đề freedom.9
  • Ngày bắt đầu Ngày bắt đầu
1736006456664.png

1Q Gang, ngồi xem 30p không biết Q2 sai cái gì
nRlF7V2.gif
 
nay vozer đi phát rating rồi à :D . Mấy tuần nay e choke quá nên không muốn vào phát điểm cùng các vozer
 
Q3 làm ntn đấy fen
DP[nums][gap] là dãy dài nhất kết thúc tại nums có chênh lệch hiện tại >= gap ấy fence. Dùng 1 HashSet<> để check nums nào đã có rồi, sau đó tại mỗi vị trí, for hết gap (0->299) rồi update DP. Sau khi update xong, for ngược của dp[nums] để update max bằng gap lớn hơn
 
Cái key của bài 3 là nếu longest subsequence của DIFF ở index i là DP[DIFF] là max của DP[K] với K <= DIFF để giảm một chiều DP xuống thành ON*D thay vì ON*D*D.
Ngu vl thế mà nhìn ko ra =((
 
Cái key của bài 3 là nếu longest subsequence của DIFF ở index i là DP[DIFF] là max của DP[K] với K <= DIFF để giảm một chiều DP xuống thành ON*D thay vì ON*D*D.
Ngu vl thế mà nhìn ko ra =((
Python:
class Solution:
    def longestSubsequence(self, nums: List[int]) -> int:
        n = len(nums)
        m = 301
        dp = defaultdict(int) # number, difference

        for num in nums:
            best = 1
            for diff in range(m - 1, -1, -1):
                best = max(best, dp[(num + diff, diff)] + 1, dp[(num - diff, diff)] + 1)
                dp[(num, diff)] = best
                
        return max(dp.values())

thấy bọn nó giải ntn, đọc cx đau đầu quá :sweat:
 

Thống kê chủ đề

Ngày tạo
freedom.9,
Người trả lời cuối
deple20k,
Trả lời
1.686
Lượt xem
107.010
Quay lại
Lên đầu trang