Thuật toán ng dụng
Bài thực hành số 3: Chia để trị
TS. Đinh Viết Sang, TA. Đặng Xuân Vương
Trường Đại học Bách khoa Nội
Viện Công nghệ thông tin Truyền thông
Ngày 23 tháng 11 năm 2020
SangDV, VuongDX (HUST) Chia để trị Ngày 23 tháng 11 năm 2020 1 / 15
Mục lục
1PIE
2FIBWORDS
SangDV, VuongDX (HUST) Chia để trị Ngày 23 tháng 11 năm 2020 2 / 15
Mục lục
1PIE
2FIBWORDS
SangDV, VuongDX (HUST) Chia để trị Ngày 23 tháng 11 năm 2020 3 / 15
04. PIE (VUONGDX)
Ncái bánh F+1 người.
Mỗi cái bánh hình tròn, bán kính r chiều cao 1.
Mỗi người chỉ được nhận một miếng bánh từ một chiếc bánh.
Cần chia bánh sao cho mọi người lượng bánh bằng nhau (có thể
b qua vụn bánh).
Tìm lượng bánh lớn nhất mỗi người nhận được.
SangDV, VuongDX (HUST) Chia để trị Ngày 23 tháng 11 năm 2020 4 / 15
Thuật toán
Gọi p[i] số người ăn chiếc bánh thứ i. Lượng bánh mỗi người nhận
được mini{V[i]
p[i]}với V[i] thể tích của chiếc bánh thứ i.
Cách 1 - Tìm kiếm theo mảng p: Tìm kiếm vét cạn mọi giá trị của
p.
Cách 2 - Tìm kiếm theo ng bánh mỗi người nhận được: Thử
từng kết quả, với mỗi kết quả, kiểm tra xem thể chia nh cho tối
đa bao nhiêu người.
Tối ưu cách 2: Sử dụng thuật toán tìm kiếm nhị phân để tìm kiếm
kết quả.
Cho một số xbất kỳ, nếu thể chia bánh sao cho mỗi người lượng
bánh xthì cũng thể chia bánh sao cho mỗi người lượng bánh
x,x<x.
Tương tự, nếu không thể chia bánh sao cho mỗi người lượng bánh
xthì cũng không thể chia bánh sao cho mỗi người lượng bánh
x,x>x.
SangDV, VuongDX (HUST) Chia để trị Ngày 23 tháng 11 năm 2020 5 / 15