Biến đổi mảng theo lân cận (VT08)
Đề bài
Cho mảng số nguyên $A$ gồm $n$ phần tử, chỉ số tính từ $0$: $A_0, A_1, \ldots, A_{n-1}$. Hãy biến đổi mảng theo quy tắc sau:
- Tại mỗi chỉ số lẻ $i$ ($i = 1, 3, 5, \ldots$), tăng $A_i$ thêm một lượng bằng chênh lệch (trị tuyệt đối của hiệu) giữa hai phần tử lân cận của nó: $A_i \leftarrow A_i + |A_{i-1} - A_{i+1}|$.
- Lân cận trái của $A_i$ là $A_{i-1}$, lân cận phải là $A_{i+1}$. Nếu không có lân cận phải ($i = n - 1$) thì coi lân cận đó bằng $0$.
- Các phần tử ở chỉ số chẵn giữ nguyên.
Dữ liệu vào:
- Dòng đầu tiên là số nguyên dương $n$.
- Dòng thứ hai gồm $n$ số nguyên $A_0, A_1, \ldots, A_{n-1}$, cách nhau bởi dấu cách.
Kết quả:
In ra mảng sau khi biến đổi trên một dòng, các phần tử cách nhau một dấu cách.
Giới hạn:
- $1 \le n \le 10^4$
- $|A_i| \le 10^8$
Giới hạn thời gian: 1 giây, bộ nhớ: 512 MB. Dữ liệu nhập từ bàn phím và in ra màn hình.
4
1 3 2 51 4 2 7Giải thích:
- Chỉ số $1$: hai lân cận là $1$ và $2$, chênh lệch $|1 - 2| = 1$, nên $3 \to 4$.
- Chỉ số $3$: lân cận trái là $2$, không có lân cận phải (coi là $0$), chênh lệch $|2 - 0| = 2$, nên $5 \to 7$.
Bấm vào nút bên dưới để nộp bài và được hệ thống CLUE OJ chấm tự động.
Nộp bài trên CLUE OJÝ tưởng
Duyệt các chỉ số lẻ i = 1, 3, 5, ... (i += 2). Lân cận trái luôn có (A[i-1] vì $i \ge 1$); lân cận phải là A[i+1] nếu i + 1 < n, ngược lại là $0$. Cộng abs(trai - phai) vào A[i].
Vì chỉ sửa ở chỉ số lẻ, còn hai lân cận đều ở chỉ số chẵn (không bị sửa), nên có thể sửa trực tiếp trên mảng.
Ví dụ $1, 3, 2, 5$: $i = 1$: $3 + |1 - 2| = 4$; $i = 3$: $5 + |2 - 0| = 7$ → 1 4 2 7.
Lưu ý / bẫy thường gặp
- Quên lấy trị tuyệt đối: "chênh lệch" luôn không âm.
- Dừng vòng lặp ở
i + 1 < nnên bỏ qua phần tử cuối (chỉ số lẻ) không có lân cận phải – phần tử đó vẫn phải biến đổi với lân cận phải bằng 0. - Nhầm chỉ số (biến đổi ở chỉ số chẵn) khi quen đếm từ 1.
- Cộng tổng hai lân cận thay vì chênh lệch.
Lời giải
Code chuẩn bên dưới đã chấm đúng toàn bộ 20 test trên CLUE OJ.
- Không biết học gì trước, học gì sau, học lan man nên kiến thức bị hổng.
- Bí bài không ai gỡ, ngồi cả buổi vẫn không ra rồi bỏ cuộc.
- Code chạy được nhưng không đủ điểm, không biết sai ở đâu, chậm ở đâu.
- Không có đề thi thử và người chấm, nên không biết mình đang ở mức nào.
- Dễ nản giữa chừng khi không có ai theo sát.
- Lộ trình 111 buổi video sắp sẵn từ dòng code đầu tiên đến đề HSG thật của các tỉnh.
- Thầy trực tiếp gỡ bí, chữa bài cho từng em qua nhóm Zalo riêng.
- Hệ thống chấm bài tự động 24/7 và thi thử HSG hằng tuần để biết chính xác mình đang ở đâu.
- Đóng học phí một lần, thầy kèm lâu dài: từ thi chuyên Tin đến HSG quốc gia và cả khi lên đại học.
Nhận xét
Đăng nhận xét