Giá trị lớn nhất
Xem dạng PDF
Gửi bài giải
Điểm:
0,08 (OI)
Giới hạn thời gian:
0.4s
Giới hạn bộ nhớ:
512M
Input:
stdin
Output:
stdout
Dạng bài
Ngôn ngữ cho phép
C, C++, Go, Java, Kotlin, Pascal, PyPy, Python, Rust, Scratch
Cho một dãy gồm ~n~ phần tử có giá trị ban đầu bằng ~0~.
Cho ~m~ phép biến đổi, mỗi phép có dạng (~u~, ~v~, ~k~): tăng mỗi phần tử từ vị trí ~u~ đến vị trí ~v~ lên ~k~ đơn vị.
Cho ~p~ câu hỏi, mỗi câu có dạng (~u~, ~v~): cho biết giá trị lớn nhất của các phần tử có vị trí nằm trong đoạn [~u~, ~v~]
Input
- Dòng 1: ~n~, ~m~
- ~m~ dòng tiếp theo, mỗi dòng chứa ~u~, ~v~, ~k~ cho biết một phép biến đổi
- Dòng thứ ~m+2~: một số ~p~
- ~p~ dòng tiếp theo, mỗi dòng chứa 2 số ~u~, ~v~ cho biết một câu hỏi
Output
- Gồm ~p~ dòng chứa kết quả tương ứng cho từng câu hỏi.
Giới hạn
- ~n~, ~m~, ~p~ ~\leq~ ~50000~
- ~0 < k ~
- Giá trị của một phần tử luôn không vượt quá ~2^{31} -1~
Sample Input
6 2
1 3 2
4 6 3
1
3 4
Sample Output
3
Bình luận
truy vấn này là sau khi thực hiện toàn bộ cập nhật nên dùng mảng hiệu, tính lại từng phần tử cho sphrase table sẽ dễ hơn
Spoil
dùng mảng hiệu + rmq cx qua nhé
0.4s python it qua a a
def giatrilonnhat(n , m , p): arr = [0] * n for i in m: for id in range(i[0] - 1 , i[1]): arr[id] += i[2] r = [] for j in p: r.append(max(arr[j[0] - 1:j[1]])) return r if name == 'main': n , o = map(int,input().split()) m = [] p = [] for _ in range(o): u = list(map(int,input().split())) m.append(u) k = int(input()) for _ in range(k): v = list(map(int,input().split())) p.append(v) r = giatrilonnhat(n , m , p) for i in r: print(i)
code python thi 0.4s nganws qua admin a
prefix sum rồi mói IT có qua được không ạ?
Đề bài đã được update và time limit đã được giới hạn về 0.4s. Mình đã chấm lại các bài nộp.