2. Ví dụ:
RADAR.INP RADAR.OUT
8 8
4
1 1
2 4
4 1
4 3
23
Bài 2. Mã hóa
Sử dụng giá trị sai phân là một phương pháp đơn giản để mã hóa và truyền tín hiệu số.
Phương pháp này được thực hiện theo nguyên lý thay vì truyền tín hiệu thu được ở thời điểm
t nào đó thì truyền sai số của nó so với tín hiệu thu được ở thời điểm ngay trước đó. Ví dụ,
chúng ta có một dãy tín hiệu gốc thu được lần lượt là 0, 2, 4, 5, 4 thì dãy tín hiệu sai phân sẽ
là 0, 2, 2, 1, -1. Chúng ta qui ước tín hiệu đầu tiên có giá trị là 0 và sai phân của nó cũng là 0,
và trong dãy có ít nhất một tín hiệu có giá trị khác 0. Người ta nhận thấy thông thường tín
hiệu sai phân biến thiên trong một miền giá trị có biên độ nhỏ hơn so với biên độ của miền
giá trị của tín hiệu gốc và do đó có thể biểu diễn các giá trị sai phân với số bit ít hơn so với
biểu diễn tín hiệu gốc. Giả sử rằng miền giá trị của tín hiệu sai phân nằm trong đoạn [n, m]
thì sẽ tồn tại một cách mã hóa để truyền một tín hiệu sai phân với số bít ít nhất là
)1(log2 +−nm . Ở đây, )1(log2 +−nm là giá trị nguyên làm tròn lên của số thực
)1(log2 +− nm (giá trị nguyên nhỏ nhất mà không nhỏ hơn )1(log2 +− nm ). Trong ví dụ
trên, giá trị của miền tín hiệu sai phân nằm trong đoạn [-1, 2] và do đó số bit ít nhất để biểu
diễn một giá trị sai phân là 2.
Yêu cầu: Cho một dãy tín hiệu gốc là các giá trị nguyên, hãy tính số bít ít nhất để truyền dãy
sai phân của dãy tín hiệu này.
Dữ liệu: Vào từ tệp văn bản CODE.INP có định dạng như sau:
• Dòng đầu tiên ghi số nguyên dương m (1 < m < 1000) là số lượng tín hiệu gốc.
• Trên mỗi dòng thứ i trong m dòng tiếp theo ghi một số nguyên si là giá trị của tín hiệu
gốc thứ i (-215
< si < 215
).
Kết quả: Ghi ra tệp văn bản CODE.OUT số nguyên dương là số bit tối thiểu cần thiết để
truyền dãy tín hiệu sai phân của dãy tín hiệu gốc này.
Ví dụ:
CODE.INP CODE.OUT
10
0
3
5
8
10
14
18
20
19
18
30
2/3