| # | Bài tập | Điểm | Thời gian: | Giới hạn bộ nhớ |
|---|---|---|---|---|
| 1 | Thuỷ cung - AQUARIUM (PreVOI Phú Thọ) | 7 (p) | 2.0s | 1G |
| 2 | Xử lý xâu - KSTRING (PreVOI Phú Thọ) | 7 (p) | 2.0s | 1G |
| 3 | Đếm hình chữ nhật 0 - RECTCNT (PreVOI Phú Thọ) | 6 (p) | 2.0s | 1G |
Tỉ phú Vương dự định sẽ xây một thủy cung thu hút khách du lịch. Để thực hiện dự định đó, ông ta đã mua \(n\) chú cá và \(m\) bể thủy sinh. Chú cá thứ \(i\) có sức mạnh là \(a_i\).
Vương cần phải quyết định xem, với mỗi chú cá thì ông sẽ đặt vào bể thủy sinh nào. Tuy nhiên, việc này không hề đơn giản, khi ông sẽ phải xem xét đến giới hạn không gian và khả năng kìm hãm sự phát triển lẫn nhau giữa những chú cá trong cùng một bể. Sau những tính toán kĩ lưỡng, ông đã ước tính rằng mức độ bất ổn của mỗi chú cá sẽ bằng tổng sức mạnh của các chú cá nằm cùng bể thủy sinh với chú cá đó (bao gồm cả bản thân chú cá đó).
Yêu cầu: Hãy giúp tỉ phú Vương đặt các chú cá vào các bể thủy sinh sao cho tổng độ bất ổn của các chú cá là nhỏ nhất.
AQUARIUM.INP:AQUARIUM.OUT một số nguyên duy nhất là tổng độ bất ổn nhỏ nhất của các chú cá.Test 1
6 3
9 2 11 3 5 8
75
Trong ví dụ thứ nhất, một cách đặt cá vào bể thủy sinh tối ưu như sau:
Độ bất ổn của các chú cá lần lượt là \(17 + 10 + 11 + 10 + 10 + 17 = 75\).
Test 2
4 4
10 20 30 40
100
Ở ví dụ thứ hai, ta sẽ đặt riêng mỗi chú cá vào một bể thủy sinh.
Khi luyện tập sang dạng bài xử lý xâu cho kì thi học sinh giỏi quốc gia sắp tới, Tuấn gặp một bài toán thú vị như sau:
Cho một xâu \(S = S_1 S_2 \dots S_n\) gồm \(n\) kí tự latin viết thường và một số nguyên không âm \(d\), các kí tự của \(S\) được đánh số từ \(1\) đến \(n\) từ trái qua phải.
Tiếp theo cho một số nguyên \(k\) (\(1 \le k \le n\)) và tạo ra \(m = \lfloor \frac{n}{k} \rfloor\) xâu độ dài \(k\), xâu thứ \(i\) trong \(m\) xâu là một xâu các kí tự con liên tiếp độ dài \(k\) của \(S\) bắt đầu từ vị trí \((i - 1) \cdot k + 1\). Nhắc lại, \(\lfloor z \rfloor\) là phép toán lấy phần nguyên của số \(z\). Nói một cách khác thì xâu \(S\) được cắt thành \(m\) xâu độ dài \(k\) và bỏ đi phần thừa. Kí hiệu xâu thứ \(i\) trong \(m\) xâu vừa được cắt là \(P_i\), khi đó \(P_i = S_{(i-1)\cdot k+1} S_{(i-1)\cdot k+2} \dots S_{i\cdot k}\).
Định nghĩa \(\text{dist}(X, Y)\) là khoảng cách Hamming của hai xâu \(X\) và \(Y\) có cùng độ dài \(k\), nghĩa là số vị trí \(u\) (\(1 \le u \le k\)) mà kí tự thứ \(u\) của \(X\) khác kí tự thứ \(u\) của \(Y\). Gọi \(f(k) = |\{(i, j) \mid (1 \le i < j \le m) \text{ thoả mãn } \text{dist}(P_i, P_j) \le d\}|\). Nói một cách khác, \(f(k)\) là số cặp xâu trong các xâu \(P\) thỏa mãn hai xâu đó khác nhau ở nhiều nhất \(d\) vị trí.
Yêu cầu: Với mỗi giá trị \(k\) từ \(1\) đến \(n\), hãy tính giá trị \(f(k)\).
Các số trên cùng một dòng cách nhau bởi dấu cách.
Test 1
11 0
ababaaabaaa
31 4 1 0 0 0 0 0 0 0 0
Trong ví dụ thứ nhất, với \(k\) bằng \(2\) ta cắt được \(5\) xâu là ab, ab, aa, ab, aa. Khi đó các cặp xâu thỏa mãn khoảng cách Hamming bé hơn hoặc bằng \(d\) (\(d = 0\)) là \((1, 2), (1, 4), (2, 4), (3, 5)\).
Test 2
11 1
ababaaabaaa
55 10 1 1 0 0 0 0 0 0 0
Cô Thái rất thích sự tròn trĩnh của những chữ số \(0\). Là giáo viên chuyên tin, cô Thái cho các bạn học sinh giỏi làm bài tập đếm số lượng hình chữ nhật chỉ chứa toàn số \(0\) trong một bảng hình chữ nhật. Cụ thể, cho một bảng hình chữ nhật kích thước \(n \times n\) ô, mỗi ô chỉ chứa số \(0\) hoặc \(1\). Các hàng đánh số từ \(1\) đến \(n\) từ trên xuống dưới, các cột đánh số từ \(1\) đến \(n\) từ trái qua phải. Có \(q\) truy vấn, mỗi truy vấn sẽ thay đổi giá trị của một ô từ \(0\) thành \(1\) hoặc từ \(1\) thành \(0\).
Yêu cầu: Với mỗi truy vấn, sau khi thay đổi giá trị hãy đếm số hình chữ nhật con (tính cả hình chữ nhật ban đầu) có cạnh song song với cạnh của bảng mà chỉ chứa các số \(0\).
Các số trên cùng một dòng cách nhau bởi dấu cách.
Test 1
4 3
0001
0100
1000
0010
2 3
2 2
3 1
29
23
31
45