Mở rộng cực trị
Đề bài
Mô tả
Với một mảng gồm các số nguyên dương, ta định nghĩa giá trị cực trị của là số lần ít nhất (có thể bằng ) cần thực hiện thao tác sau để mảng trở thành không giảm:
- Chọn một chỉ số với (trong đó là độ dài hiện tại của ).
- Thay phần tử bằng hai số nguyên dương và thỏa mãn .
Sau mỗi thao tác, mảng dài thêm một phần tử và thao tác tiếp theo được thực hiện trên mảng vừa thay đổi. Có thể chứng minh mọi mảng số nguyên dương đều có thể biến thành không giảm bằng cách này.
Ví dụ, nếu và chọn chỉ số , thao tác có thể tạo ra , hoặc . Với mảng này, một thao tác là đủ: , nên giá trị cực trị của nó bằng .
Cho một mảng gồm số nguyên. Hãy tính tổng giá trị cực trị của tất cả các mảng con liên tiếp không rỗng của , lấy dư cho . Nếu một mảng con xuất hiện nhiều lần trong , giá trị cực trị của nó được tính đúng số lần xuất hiện.
Một mảng là mảng con liên tiếp của nếu nhận được từ bằng cách xóa một số (có thể là hoặc tất cả) phần tử ở đầu và một số phần tử ở cuối.
Dữ liệu vào
- Dòng đầu chứa số nguyên () là số bộ dữ liệu.
- Với mỗi bộ dữ liệu:
- Dòng đầu chứa số nguyên ().
- Dòng thứ hai chứa số nguyên ().
Tổng trên tất cả các bộ dữ liệu không vượt quá .
Dữ liệu ra
Với mỗi bộ dữ liệu, in ra một số nguyên là tổng giá trị cực trị của tất cả các mảng con liên tiếp của , lấy dư cho .
Ràng buộc
- Tổng trên tất cả các bộ dữ liệu không vượt quá .
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 4 3 5 4 3 4 3 2 1 4 1 69 8 7264 40515 28226 92776 35285 21709 75124 48163 |
5 9 0 117 |
Bộ 1: các mảng con là cần thao tác, cần , cần , còn , , cần . Tổng . Bộ 3: chỉ có một phần tử nên đã không giảm, tổng . |
| 2 2 4 3 3 1 2 3 |
1 0 |
Bộ 1: cần thao tác; , cần . Bộ 2: mọi mảng con đều đã không giảm nên tổng . |
Bình luận