Minimalist Forum Reader
Câu C làm binary search được luôn à ảo thế nhỉ, mình cứ nghĩ cách dùng Kadane tính sum của tụi ko có cái element X. Còn include X vào như nào thì éo biết =((
Bu dùng Kadane đó fen.
Câu C làm binary search được luôn à ảo thế nhỉ, mình cứ nghĩ cách dùng Kadane tính sum của tụi ko có cái element X. Còn include X vào như nào thì éo biết =((

Dùng cái Kadane gì đó 2 bên. X thì tính min max liền trái phải. Cuối cùng merge 3 dãy lại, mình nghĩ vậy.
Reactions: freedom.9
Đoạn include X vào thì không cần dùng Kadane fen à.
Thuật của Bu như này:
Giả sử X ở vị trí pos, chia dãy ra làm 2 trường hợp:
  • Các đoạn con không chứa X: 1 -> pos - 1 và pos + 1 -> N. Xử lí cái này dùng Kadane tìm tổng nhỏ nhất có thể (min) và tổng lớn nhất có thể (max) rồi thêm các tổng từ min -> max vào tập kết quả.
  • Các đoạn con chứa X: Tìm về hai bên trái phải của pos để tìm đoạn con chứa X có tổng nhỏ nhất có thể (min) và tổng lớn nhất có thể (max) rồi thêm các tổng từ min -> max vào tập kết quả.

Code C++
Reactions: freedom.9
Đoạn include X vào thì không cần dùng Kadane fen à.
Thuật của Bu như này:
Giả sử X ở vị trí pos, chia dãy ra làm 2 trường hợp:
  • Các đoạn con không chứa X: 1 -> pos - 1 và pos + 1 -> N. Xử lí cái này dùng Kadane tìm tổng nhỏ nhất có thể (min) và tổng lớn nhất có thể (max) rồi thêm các tổng từ min -> max vào tập kết quả.
  • Các đoạn con chứa X: Tìm về hai bên trái phải của pos để tìm đoạn con chứa X có tổng nhỏ nhất có thể (min) và tổng lớn nhất có thể (max) rồi thêm các tổng từ min -> max vào tập kết quả.

Code C++
Lol tự dưng mình quên mất cái prefixsum, đi từ pos tới n để tìm max prefixsum trong dãy, đi từ pos - 1 về 0 để tìm min prefixSum trong dãy là tính đc max nhỉ.
Làm ngược lại sẽ tính được min rồi bruteforce?
Lol tự dưng mình quên mất cái prefixsum, đi từ pos tới n để tìm max prefixsum trong dãy, đi từ pos - 1 về 0 để tìm min prefixSum trong dãy là tính đc max nhỉ.
Làm ngược lại sẽ tính được min rồi bruteforce?
Chuẩn rồi fen
Lol tự dưng mình quên mất cái prefixsum, đi từ pos tới n để tìm max prefixsum trong dãy, đi từ pos - 1 về 0 để tìm min prefixSum trong dãy là tính đc max nhỉ.
Làm ngược lại sẽ tính được min rồi bruteforce?

Tìm 2 min, 2 max hai bên. Tính sum 2 min, sum 2 max, đẩy range lên X là ra mà thím.
Ví dụ (-2,4) 10 (-3,6) -> (5,20)
Reactions: freedom.9
Cảm ơn fen @freedom.9 nhé, gần 1 năm không chơi Codeforces tự nhiên lướt forum thấy có thread vui quá nên comeback. Mất cả năm nằm thẳng đánh LOL tù hết người.
Cố gắng chăm chỉ tí lên CM cho thỏa mãn cái đã.
Reactions: Ezzra Bridger, lilleboybk, Hover and 1 other person
Chuẩn rồi fen
Đậu xanh skill issue rồi, tự dưng quên mẹ mất cái prefix sum để tính.
Câu 2 chỗ chia cho 7 nhìn ko ra, tụi này toàn cho toán ngọng quá thật buồn :ah:
Tìm 2 min, 2 max hai bên. Tính sum 2 min, sum 2 max, đẩy range lên X là ra mà thím.
Ví dụ (-2,4) 10 (-3,6) -> (5,20)
Ờ nhỉ, đơn giản vậy mà ko nghĩ ra :ah: nhưng mà trường hợp như max sum bên trái âm mà bên phải dương thì sao fence nhỉ. Mình nghĩ phải dùng combination chỗ này.

Cảm ơn fen @freedom.9 nhé, gần 1 năm không chơi Codeforces tự nhiên lướt forum thấy có thread vui quá nên comeback. Mất cả năm nằm thẳng đánh LOL tù hết người.
Cố gắng chăm chỉ tí lên CM cho thỏa mãn cái đã.
1 năm nằm thẳng mà giải 4Q Div 2 như nhai kẹo thế này :(
Đậu xanh skill issue rồi, tự dưng quên mẹ mất cái prefix sum để tính.
Câu 2 chỗ chia cho 7 nhìn ko ra, tụi này toàn cho toán ngọng quá thật buồn :ah:

Ờ nhỉ, đơn giản vậy mà ko nghĩ ra :ah: nhưng mà trường hợp như max sum bên trái âm mà bên phải dương thì sao fence nhỉ.


1 năm nằm thẳng mà giải 4Q Div 2 như nhai kẹo thế này :(
1735063521037.png

Bài B fen không cô đơn :sweat:
Reactions: freedom.9
Đậu xanh skill issue rồi, tự dưng quên mẹ mất cái prefix sum để tính.
Câu 2 chỗ chia cho 7 nhìn ko ra, tụi này toàn cho toán ngọng quá thật buồn :ah:

Ờ nhỉ, đơn giản vậy mà ko nghĩ ra :ah: nhưng mà trường hợp như max sum bên trái âm mà bên phải dương thì sao fence nhỉ. Mình nghĩ phải dùng combination chỗ này.


1 năm nằm thẳng mà giải 4Q Div 2 như nhai kẹo thế này :(

Chưa hiểu ý thím lắm. Max sao âm được, tối thiểu nó là 0 (dãy rỗng).
Reactions: freedom.9
Chưa hiểu ý thím lắm. Max sao âm được, tối thiểu nó là 0 (dãy rỗng).
Chuẩn luôn fen
Reactions: freedom.9
Chưa hiểu ý thím lắm. Max sao âm được, tối thiểu nó là 0 (dãy rỗng).
Ừ đúng rồi max ko âm được nên cách của fence cũng đúng rồi
Nghỉ thôi các fence, tối 28 chiến tiếp.
Reactions: freedom.9
Nghỉ thôi các fence, tối 28 chiến tiếp.
28 ko biết có rated ko nhỉ, hay chỉ làm cho vui.
Phải nửa tháng nữa mới có div2 lại, toàn trong working hours nên chắc ko làm đc

via theNEXTvoz for iPhone
Ae xài Python codeforces hạn chế xài set nhé, xài list thôi chấp nhận value bị trùng cũng được
Code của mình bị nó hack TLE, nếu đoạn prices = sorted(list(a + b)) thì pass

Python:
from bisect import bisect_left, bisect_right
 
 
t = int(input())
 
def solve():
    N, K = map(int, input().split())
    a = list(map(int, input().split()))
    b = list(map(int, input().split()))
    a = sorted(a)
    b = sorted(b)
    prices = sorted(set(a + b))
    ans = 0
    for price in prices:
        totalBought = N - bisect_left(b, price)
        boughtWithPossitiveReviews = N - bisect_left(a, price)
        if totalBought - boughtWithPossitiveReviews <= K:
            ans = max(ans, price* totalBought)
    
    return ans
 
for _ in range(t):
    print(solve())
Ae xài Python codeforces hạn chế xài set nhé, xài list thôi chấp nhận value bị trùng cũng được
Code của mình bị nó hack TLE, nếu đoạn prices = sorted(list(a + b)) thì pass

Python:
from bisect import bisect_left, bisect_right
 
 
t = int(input())
 
def solve():
    N, K = map(int, input().split())
    a = list(map(int, input().split()))
    b = list(map(int, input().split()))
    a = sorted(a)
    b = sorted(b)
    prices = sorted(set(a + b))
    ans = 0
    for price in prices:
        totalBought = N - bisect_left(b, price)
        boughtWithPossitiveReviews = N - bisect_left(a, price)
        if totalBought - boughtWithPossitiveReviews <= K:
            ans = max(ans, price* totalBought)
 
    return ans
 
for _ in range(t):
    print(solve())


Code:
    a = sorted(a)
    b = sorted(b)
    prices = sorted(set(a + b))

Thím dùng nhiều hàm built in lồng nhau thế này nhìn hơi rợn, cảm giác không biết bên trong nó làm có tối ưu không.
Nghe thím nói bị hack mình cũng không bất ngờ lắm. :pudency:
Tiện tay thì code nhanh đoạn merge 2 list thôi.
Reactions: freedom.9
Code:
    a = sorted(a)
    b = sorted(b)
    prices = sorted(set(a + b))

Thím dùng nhiều hàm built in lồng nhau thế này nhìn hơi rợn, cảm giác không biết bên trong nó làm có tối ưu không.
Nghe thím nói bị hack mình cũng không bất ngờ lắm. :pudency:
Tiện tay thì code nhanh đoạn merge 2 list thôi.
Mình bị hack do dùng set(a + b) rồi brute force, dùng list(a + b) thì ok, cái đoạn code trên có cả sorted nữa nhưng mà dùng set cũng TLE sml rồi.
À có lần mình dùng defaultdict(int) lưu key là number cũng TLE sml, mà convert key qua string thì lại pass mượt mà thế mới ảo. Mình coi tụi nó submit bằng python cũng thấy tụi nó cast qua string rồi mới cho vô dict
Dạo này phong độ phập phù quá xuống 2k1 rồi. 2 tuần liên tục toàn 1Q Gang :waaaht:

via theNEXTvoz for iPhone
Mấy testcase dài quá bên CodeForce không cho copy ra để debug nhỉ các bác.