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
1000062745.jpg

Sai hướng bài cuối mất mẹ 1 tiếng
 
Ngu hay khôn cũng xin code để có nhiều góc nhìn khác nhau fen
osCpCsi.gif

Còn cách rolling hash chắc bỏ đi :shame:


via theNEXTvoz for iPhone
Nhóm các phần tử trùng nhau, lưu index start của mỗi nhóm
Lưu list index kết thúc theo số dư của mảng prefixsum
Xong với mỗi list index đó cần chọn các bộ thỏa mãn k chung nhóm, thì cái này em dùng binary search :))). Xong đếm nốt các bộ chung 1 nhóm thỏa mãn bài toán là dc
Nói chung cũng na ná. Mà đang theo hướng đó nên nghĩ dùng bs thôi
 
Nhóm các phần tử trùng nhau, lưu index start của mỗi nhóm
Lưu list index kết thúc theo số dư của mảng prefixsum
Xong với mỗi list index đó cần chọn các bộ thỏa mãn k chung nhóm, thì cái này em dùng binary search :))). Xong đếm nốt các bộ chung 1 nhóm thỏa mãn bài toán là dc
Nói chung cũng na ná. Mà đang theo hướng đó nên nghĩ dùng bs thôi
Mà nếu fen bisearch thì tìm sub array có divisible by k hay ko kiểu gì nhỉ. Mình chỉ biết cách đếm bằng hashmap.
À có thể fen dùng cái list chỗ số dư mỗi nhóm. Mà đi kiểu này thì cũng như đi hashmap rồi đếm các bộ chung nhóm, nói chung key của bài này là chỉ cần loại trừ số sub array trong bộ chung nhóm là được
zFNuZTA.gif


via theNEXTvoz for iPhone
 
Sửa lần cuối:
Nay khá choke vì tiếp cận cái unique sai hướng. Làm chia nhóm theo giá trị phần tử luôn từ đầu thì câu chuyện nó đơn giản hơn nhiều r
À với cả k để ý max ans ~n^2 nữa.nên ngồi đếm tưngg cái 100% tle r
 
Nay rảnh ngồi làm thử contest CN vừa rồi. Câu 4 lấy ý tưởng từ câu 3, cứ cộng hết vào r tính toán phần bị dup mà trừ ra. Cũng khá gọn gàng

Python:
class Solution:
    def numGoodSubarrays(self, nums: List[int], k: int) -> int:
        m = defaultdict(int)
        m[0] = 1
        exclude = defaultdict(int)
        res = 0
        prefix = 0
        for i, num in enumerate(nums):
            pre = prefix
            prefix = (prefix + num) % k
            res += m[prefix]
            m[prefix] += 1
            if i > 0 and nums[i - 1] == nums[i]:
                exclude[(num, pre)] += 1
                res -= exclude[(num, prefix)]
        return res
 
Sửa lần cuối:
Tuần trước làm bài bay quá nên tuần này xin phép tạm nghỉ cày cuốc cho đúng cái rating sau quay lại kiếm cái badge bảo vệ cho oai :beauty:
Screenshot 2025-10-29 at 18.20.33.png
 
rank 3 số mà, tầm này là tốc độ r, chắc lên lại 2k5 xong e qua cf làm hoy, tối nay có contest sponsor, thử sức xem sao
Cố gắng lên 2k5 cho xong mục tiêu chắc mình dừng để làm daily thôi, bỏ codeforces chứ già rồi ko đú nổi để tgian làm cái khác :sweat:
Mà lên đc 2k5 chắc phải 2 năm nữa
zFNuZTA.gif



via theNEXTvoz for iPhone
 
Cố gắng lên 2k5 cho xong mục tiêu chắc mình dừng để làm daily thôi, bỏ codeforces chứ già rồi ko đú nổi để tgian làm cái khác :sweat:
Mà lên đc 2k5 chắc phải 2 năm nữa
zFNuZTA.gif



via theNEXTvoz for iPhone
ừa cf cảm giác căng thẳng quá, cày thử xem sao thím.
Thả cái ảnh này động lực cho ae làm contest nhé.
1000062757.jpg
 

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.155
Quay lại
Lên đầu trang