Bu dùng Kadane đó fen.
thảo luận Leetcode + Codeforces, Competitive programming contest. Đường tới Guardian + Candidate Master.
Trang 4/81
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
Include cái X vào như nào thế fence

Đ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:
Code C++
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 có 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
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
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 đã.
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
Đậ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

Ờ nhỉ, đơn giản vậy mà ko nghĩ ra
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

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).
Reactions:
freedom.9
Chuẩn luôn fen
Reactions:
freedom.9
Ừ đú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
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
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.

Tiện tay thì code nhanh đoạn merge 2 list thôi.
Reactions:
freedom.9
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
Mấy testcase dài quá bên CodeForce không cho copy ra để debug nhỉ các bác.

