| # | Bài tập | Điểm | Thời gian: | Giới hạn bộ nhớ |
|---|---|---|---|---|
| 1 | Dữ liệu (Duyên hải Bắc Bộ 2023 K10) | 100 (p) | 1.0s | 256M |
| 2 | Bảng số (Duyên hải Bắc Bộ 2023 K10 & K11) | 100 (p) | 1.0s | 256M |
| 3 | Cứu hộ (Duyên hải Bắc Bộ 2023 K10 & K11) | 100 (p) | 1.0s | 256M |
Dữ liệu tài chính của một công ty trong \(n\) ngày được biểu diễn bằng một đấy số \(t_1,t_2,\ldots,t_n\), trong đót \(t_i\) \((1 \leq i \leq n)\) là lượng tiền thu về của ngày thứ \(i\). Lãnh đạo công ty thường xuyên yêu cầu thống kê số liệu về tổng tiền lớn nhất thu được của hai ngày liên tiếp trong các ngày từ ngày \(L\) đến ngày \(R\) \((L < R)\), nghĩa là cần tìm giá trị lớn nhất trong các giá trị \((t_i + t_{i + 1})\) với \(L \leq i < R\).
Một nhân viên đã truy cập trái phép dữ liệu của công ty và trước mỗi lần lãnh đạo công ty yêu cầu thống kê số liệu, nhân viên sẽ tìm cách đảo ngược một đoạn dữ liệu nào đó trong các ngày từ ngày \(L\) đến ngày \(R\) với mục đích khi thống kê dữ liệu trong đoạn từ ngày \(L\) đến ngày \(R\) thì giá trị trả về càng lớn càng tốt. Ví dụ, nếu đảo ngược đoạn từ ngày \(i\) đến ngày \(j\) \((1 \leq L \leq i \leq j \leq R \leq n)\) trên dữ liệu ban đầu \(t_1, t_2, \ldots, t_i, t_{i + 1}, \ldots, t_j, \ldots, t_n\) thì dữ liệu thay đổi là \(t_1, t_2, \ldots, t_j, t_{j - 1}, \ldots, t_i, \ldots, t_n\). Sau khi thống kê số liệu xong, người này này sẽ lại thay đổi dữ liệu như ban đầu.
Yêu cầu: Cho biết dữ liệu ban đầu là \(t_1,t_2,\ldots,t_n\) và \(q\) lần yêu cầu thông kê dữ liệu, hãy cho biết số liệu thống kê trả về khi bị can thiệp vào dữ liệu.
Test 1
5 2
5 2 3 1 3
1 5
4 5
8
4
Với yêu cầu thống kê thứ nhất, đảo ngược đoạn từ ngày \(1\) đến ngày \(2\) để có dữ liệu mới: \(2\) \(5\) \(3\) \(1\) \(3\), kết quả thống kê được là \(8\).
Với yêu cầu thống kê thứ hai, đảo ngược đoạn từ ngày \(4\) đến ngày \(5\) để có dữ liệu mới: \(5\) \(2\) \(3\) \(3\) \(1\), kết quả thống kê được là \(4\).
Cho mảng \(A\) gồm \(m\) phần tử (các phần tử được đánh số từ \(1\) đến \(m\)) và mảng \(B\) gồm \(n\) phần tử (các phần tử được đánh số từ \(1\) đến \(n\)), mỗi phần tử của hai mảng chỉ nhận một trong ba giá trị \(-1,0,1\). Tiến hành tạo bảng \(C\) kích thước \(m \times n\), trong đó phần tử \((i, j)\) nhận giá trị \(C[i][j] = A[i] \times B[j]\) với \(1 \leq i \leq m\) và \(1 \leq j \leq n\).
Một bảng con vuông kích thước \(s\) của bảng \(C\) có phần tử trái trên là \((x,y)\) và phần tử phải dưới là \((x+s-1,y+s-1)\) với \(1 \leq x \leq m - s + 1\) và \(1 \leq j \leq n - s + 1\) được gọi là bảng con vuông "cân bằng" nếu:
Yêu cầu: Cho hai mảng \(A\) và \(B\), đếm số bảng con vuông "cân bằng" trong bảng \(C\).
Test 1
3 4
1 -1 1
1 0 -1 1
1
| \(1\) | \(0\) | \(-1\) | \(1\) | |
|---|---|---|---|---|
| \(1\) | \(1\) | \(0\) | \(-1\) | \(1\) |
| \(-1\) | \(-1\) | \(0\) | \(1\) | \(-1\) |
| \(1\) | \(1\) | \(0\) | \(-1\) | \(1\) |
Chi có duy nhất một bảng con vuông "cân bằng" là bảng con kích thước \(2\) có phần tử trái trên là \((2,3)\).
Vũ trụ Z có \(n\) hành tinh, các hành tinh được đánh số từ \(1\) đến \(n\). Một hệ thống gồm \(m\) đường dịch chuyển, đường dịch chuyển thứ \(k\) \((1 \leq k \leq m)\) sẽ giúp di chuyển từ hành tinh \(i_k\) đến hành tinh \(j_k\) và mất chi phí là \(e(i_k, j_k)\). Một vụ nổ trong vũ trụ đã làm ảnh hưởng lớn đến tất cả các hành tinh, trừ hành tinh số \(1\). Hành tinh số \(1\) lên kế hoạch cứu hộ cho \(n - 1\) hành tinh còn lại.
Các nhà khoa học ở hành tinh số \(1\) đã tìm ra cách di chuyển giúp đội cứu hộ có thể di chuyển đến một hành tinh khác với chi phí nhỏ hơn. Cụ thể, với số nguyên không âm \(a\) mà các nhà khoa học thiết đặt, giả sử đội cứu hộ lần lượt di chuyển qua dãy gồm \(p\) hành tinh \(1 = x_1, x_2, \ldots, x_p\). Như vậy, đội cứu hộ sẽ phải sử dụng \(p - 1\) đường dịch chuyển, gọi \(s_1\) là tổng chi phí của \(p - 1\) đường dịch chuyển, gọi \(r_1\) là tổng chi phí của \(a\) đường dịch chuyển có chi phí lớn nhất trong \(p - 1\) đường dịch chuyển (nếu \(a > p - 1\) đường dịch chuyển thì tính tổng chi phí của \(p - 1\) đường dịch chuyển), khi đó đội cứu hộ sẽ mất chi phí là \(s_1 - r_1\).
Về phía các hành tinh, các nhà khoa học cũng đã tính toán ra số nguyên không âm \(b\) dựa trên mức độ ảnh hưởng của vụ nổ để xác định được chi phí di chuyển của cư dân. Cụ thể, nếu cư dân hành tinh \(i\) phải di chuyển qua dãy gồm \(q\) hành tinh \(i = y_1, y_2, \ldots, y_q\), gọi \(s_2\) là tổng chi phí của \(q - 1\) đường dịch chuyên, gọi \(r_2\) là tổng chi phí của \(b\) đường dịch chuyển có chi phí nhỏ nhất trong \(q - 1\) đường dịch chuyển (nếu \(b > q - 1\) thì tính tổng chi phí của \(q - 1\) đường dịch chuyển), khi đó cư dân sẽ mất chi phí là \(s_2 + r_2\).
Chi phí để đội cứu hộ gặp được cư dân của hành tinh \(i\) là tổng chi phí di chuyển của đội cứu hộ cộng với tổng chi phí của cư dân hành tinh \(i\) di chuyển để họ gặp được nhau.
Yêu cầu: Với mỗi hành tinh \(i\) \((2 \leq i \leq n)\), hãy tính chi phí nhỏ nhất để đội cứu hộ xuất phát từ hành tinh \(1\) có thể gặp cư dân của hành tinh \(i\).