Tin 11: Bộ đề ôn thi Học kỳ 1 - Lớp 11TH

12 19 0
Tin 11: Bộ đề ôn thi Học kỳ 1 - Lớp 11TH

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Dữ liệu vào: Trong file XEPHANG.INP gồm có: Dòng thứ nhất chứa 2 số nguyên dương n và t cách nhau bởi một khoảng trắng, dòng thứ hai gồm một dãy n kí tự 'G' và 'B' biểu thị vị trí đứng[r]

(1)

BỘ ĐỀ ÔN TẬP HỌC KỲ – LỚP 11TH

CHUYÊN ĐỀ KỸ THUẬT LẬP TRÌNH

BÀI 1:TÌM SỐ ÂM LỚN NHẤT

Cho dãy gồm N số nguyên a1, a2, …, aN, số có giá trị tuyệt đối khơng vượt q 105 u cầu: Hãy tìm số âm lớn X dãy

Dữ liệu: Vào từ file văn SOAM.INP:

 Dòng chứa số nguyên dương N (1N105)

 N dòng tiếp theo, dòng thứ i chứa số ai

Kết quả: Ghi file văn SOAM.OUT dòng số X tìm Trong trường hợp khơng có lời giải, ghi số

Ví dụ:

SOAM.INP SOAM.OUT

5 -4 -5

-4

BÀI ƯỚC NGUYÊN TỐ

Cho số tự nhiên n Hãy in tất ước nguyên tố Dữ liệu vào: file uocnt.inp chứa số n

Dữ liệu ra: file uocnt.out gồm nhiều dòng

 Dòng đầu ghi số n

 Các dòng tiếp theo, dòng ghi ước ngun tố n Nếu khơng có ước ngun tố ghi

Ví dụ 1:

Input Output 15 15

3 Ví dụ 2:

Bài 3: KÍ TỰ CHÍNH

Một xâu S có độ dài khơng q 255 kí tự, gồm kí tự in hoa lấy từ tập kí tự Latinh {‘A’, ‘B’, ‘C’, , ‘Z’} Một kí tự gọi kí tự số lần xuất xâu nhiều

- u cầu: Viết chương trình tính số lần xuất kí tự xâu

- Dữ liệu vào: Từ tệp văn KITU.INP có dịng ghi xâu S

- Dữ liệu ra: Ghi vào tệp văn KITU.OUT ghi kết theo yêu cầu

- Ví dụ:

Bài 4: số nguyên Input Output

1

(2)

BỘ ĐỀ ÔN TẬP HỌC KỲ – LỚP 11TH tố - Số Fibonacci

Hãy lập trình tìm tất số nguyên X (10<=x<=n, 10<=n<=2tỷ) Thoả mãn:

- X số nguyên tố - X số Fibonacci

Dữ liệu vào: File NGTOFIB.INP chứa số n

Kết quả: File NGTOFIB.OUT dòng gồm số X số Xn tạo thành từ số X VD:

NGTOFIB.INP NGTOFIB.OUT 15 13

Bài 5: XẾP HÀNG (HSG V1- 2013)

Trong học thể dục, thầy giáo xếp n học sinh lớp thành hàng vị trí học sinh đánh số từ đến n từ trái sang phải Ban đầu học sinh đứng tùy ý hàng Tuy nhiên, để tôn trọng bạn nữ, thầy muốn bạn nam không đứng liền trước bạn nữ (đứng liền trước hiểu vị trí bạn nam i vị trí bạn nữ i+1) Để thực quy định này, thầy bắt đầu từ đầu hàng đến cuối hàng, gặp bạn nam đứng liền trước bạn nữ, thầy yêu cầu bạn nam đổi chỗ cho bạn nữ tiếp đến bạn sau Chú ý lượt xếp, thầy theo chiều bạn nam đổi chỗ lần Tất nhiên theo chiều bạn nam đổi chỗ lần Tất nhiên lượt xếp có nhiều vị trí mà bạn nam đứng trước nữ xuất thêm nên cần phải làm làm lại thao tác xếp nhiều lần

Yêu cầu: Cho hai số nguyên dương n,t với 0<n,t≤50 dãy kí tự G B, G kí hiệu bạn nữ B kí hiệu bạn nam thể vị trí học sinh lớp ban đầu Hỏi sau bao lần thay đổi thứ t vị trí học sinh sau lần thao tác thầy giáo hoàn tất việc xếp này?

Dữ liệu vào: Trong file XEPHANG.INP gồm có: Dịng thứ chứa số nguyên dương n t cách khoảng trắng, dòng thứ hai gồm dãy n kí tự 'G' 'B' biểu thị vị trí đứng học sinh hàng (từ trái qua phải tương ứng với số vị trí tăng dần) Kết quả: In file XEPHANG.OUT hai dòng: Dòng thứ gồm dãy n kí tự 'G' 'B' biểu thị vị trí đứng học sinh sau thầy giáo xếp lại lần thứ t, dòng thứ hai số nguyên cho biết số lần thầy giáo cần xếp

Chú ý số t lớn số lần thầy giáo cần xếp Ví dụ:

XEPHANG.INP XEPHANG.OUT

5 BGGBG

GBGGB

5 BGGBG

GGBGB

4 GGGB

GGGB Bài ĐẶC SẢN ĐỒNG THÁP (HSG V1-2013)

(3)

BỘ ĐỀ ÔN TẬP HỌC KỲ – LỚP 11TH

kilogram (kg) Mỗi lần nhập hàng về, chủ cửa hàng muốn chia loại đặc sản thành gói quà theo quy tắc sau:

(1)3 kg nem thành gói quà (2)3 kg quýt thành gói quà (3)3 kg hủ tiếu thành gói quà

(4)1 kg nem, kg quýt kg hủ tiếu thành gói quà

Biết khối lượng tính kg loại đặc sản lúc nhập số nguyên dương Ông chủ cửa hàng thắc mắc chia chúng để gói thành nhiều gói quà (không thiết phải sử dụng hết khối lượng loại hàng)

Yêu cầu: Cho số nguyên dương A,B,C với 0<A,B,C≤109

khối lượng nem, quýt, hủ tiếu Hãy tìm số lượng gói quà lớn gói

Dữ liệu vào: Trong file DACSAN.INP, có dịng gồm số nguyên dương A,B,C ngăn cách dấu khoảng trắng

Kết quả: In kết file DACSAN.OUT, số nguyên dương số lượng gói q lớn nhấ cần tìm

Ví dụ:

DACSAN.INP DACSAN.OUT

3

4 4

2 12

4

5

Chú ý: 50% test có giá trị A,B,C không vượt 103 Bài DIỄN ĐÀN TIN HỌC(HSG V1-2014)

Việt người thích diễn đàn ddth.com với việc thảo luận bạn yêu Tin học gần xa, bạn học nhiều điều bổ ích Mỗi ngày, Việt thường dành khoảng vải chục phút đọc thong tin cập nhập tin tức mới.Trân diễn đàn có nhiều chủ đề có nhiều viết Diễn đàn có hỗ trợ cho người tham gia danh sách n chủ đề cập nhật, tu712c chủ đề vừa đăng chủ đề cũ cói viết Mỗi chủ đề tạo ( coi có viết mới) chủ đề cũ có viết gửi vào, đứng đầu danh sách Giả sử khơng có viết đăng lúc Mơt ngày trước học Việt lên đọc tất chủ đề nằm danh sách trang chủ diễn đàn Đến trưa Việt bất ngờ thấy danh sách khơng có chủ đề vị trí chúng bị thay đổi, điều có nghĩa số viết gửi lên chủ đề cũ

Để tiết kiệm thời gian, Việt muốn đọc chủ đề chắn có viết , việc chắn xét tất tình

u cầu: Hãy giúp Việt xác định số lương chủ đề chắn có viết

Dữ liệu Trong file DIENDAN.INP, dòng gồm số nguyên dương n cho biết số lượng chủ đề có danh sách trang chủ với 0< n<=100 Dòng thứ hai gồm n số nguyên dương a1,a2 ,an

hai số kề nahu cách khoảng chắn , cho biết vị trí cũ chủ đề tương ứng hay nói cách khác vị trí cũ thú i mà Việt thấy trước

Kết quả

(4)

BỘ ĐỀ ÔN TẬP HỌC KỲ – LỚP 11TH

DDTH.INP DDTH.OUT

5

5

2

4

2 BÀI MÁY RÚT TIỀN MÁY ATM

Lưu ý có biến thể tốn: số tờ giấy bạc có số lượng khơng hạn chế hay số lượng định

BÀI BÀI TOÁN CÁI BA LÔ (Túi xách)

Một người du lịch có n loại đồ vật có trọng lượng giá trị khác Nhưng có túi xách có dung lượng w (có thể chứa số đồ vật cho tổng trọng lượng đồ vật nhỏ w)

Bạn viết chương trình giúp người du lịch phải chọn lựa danh sách đồ vật mang để tổng giá trị đồ vật mang lớn Giả thiết loại đồ vật có đủ nhiều

Dữ liệu: File vào gồm dòng Dòng file vào chứa hai số nguyên dương n w (n, w 1000) Dòng thứ hai ghi n số nguyên dương ai (ai< 1000, i = 1, 2, , n) Dòng cuối

cùng ghi n số nguyên dương ci (ci< 100.000, i = 1, 2, , n) Các số dòng cách dấu cách

Kết quả: File gồm dòng Dòng thứ ghi tổng giá trị đồ vật mang lớn Dòng thứ hai ghi n số nguyên cách dấu cách, số thứ i số lượng đồ vật i cần mang theo (i = 1, 2, , n) Nếu có nhiều cách mang đồ vật cho tổng giá trị lớn ghi cách chúng

Ví dụ:

tuixach.in tuixach.out 20

1 16

56 0

(5)

BỘ ĐỀ ÔN TẬP HỌC KỲ – LỚP 11TH BÀI 10 NGƯƠI DU LỊCH

BÀI 11 DÂY CHUYỀN SẢN XUẤT (Cấp tỉnh năm 2011)

Nhà máy Bích Chi cần kết hợp N công việc thành dây chuyền sản xuất Công việc thứ i cần ai ngày công Mỗi công đoạn sản phẩm kết hợp công việc liên tiếp lại với thành cơng việc với chi phí cho công đoạn tổng ngày công cơng việc

- u cầu: Bạn giúp nhà máy ghép N cơng việc thành dây chuyền N-1

công đoạn sản phẩm cho tổng chi phí cơng đoạn nhỏ

- Dữ liệu vào:từ tệp văn SXUAT.INP có dạng:

+ Dòng đầu ghi số N (1<=N<=100) số cơng việc

+ Dịng thứ i N dòng ghi số nguyên dương ai số ngày công công việc thứ i (ai < 1000)

- Kết quả: ghi tệp văn SXUAT.OUT có số nguyên dương chi phí nhỏ

nhất tìm

- Ví dụ:

SXUAT.INP SXUAT.OUT

5 4 1 2 7 5

(6)

BỘ ĐỀ ÔN TẬP HỌC KỲ – LỚP 11TH

- Giải thích:

4 2 1 4 3 7 7 12 19

Tổng chi phí: 3+7+12+19=41

Bài 12 ĐIỀN KINH (Đồng Tháp – Thi thử QG 2014)

Có N trường học lập đội tuyển thi chạy điền kinh Mỗi đội gồm K người Mỗi lần thi đấu trường cử người chạy, có K lần thi tất Mỗi lần thi, người chạy nhanh nhận huy chương Trường nhận nhiều huy chuơng thắng Trường phổ thơng "Siêu đẳng" khơng thể thao nên tìm cách thi có lợi Do Ban tổ chức gọi danh sách theo thứ tự đăng ký mà trường gửi lên, nên trường "Siêu đẳng" thu thập thành tích trường tất vận động viên đội bạn (tính theo thời gian chạy), đợi đội bạn đăng ký xong họ tìm cách lấy danh sách để xếp số thứ tự cho đội (dĩ nhiên, họ nắm rõ trình độ đội nhà)

Bạn giúp trường "Siêu đẳng" xếp danh sách đội tuyển cho số huy chương đạt nhiều

Dữ liệu vào : Cho từ tệp văn SUPERSCH.INP: - Dòng chứa N, K ( k100)

- N-1 dòng tiếp theo, dịng ghi thành tích k vận động viên trường bạn - Dịng thứ n ghi thành tích k vận động viên trường "Siêu đẳng" Kết quả: Ghi tệp văn SUPERSCH.OUT:

- Dòng đầu ghi số huy chuơng mà trường "Siêu đẳng" nhận Ví dụ:

SUPERSCH.INP SUPERSCH.OUT

4 6

2

Bài 13: Nối xích (Tài liệu Chuyên Tin Q1)

Có N đoạn xích (N<20000), đoạn xích xâu mắt xích nối Các đoạn tách rời nhau, đoạn k có 20000 mắt xích Bắng cách cắt mắt xích, hàn lại ta nối mắtt xích thành đoạn Time để cắt - nối xem như với mắt xích Nhiệm vụ: nối tất đoạn thành đoạn với time (hay số mắt xích bị cắt - nối nhất)

INPUT: file xich.inp có cấu trúc sau:

- Dòng số N - số đoạn xích - Những dịng tiếp theoo ghi N số ngun dương, sơ thứ i số mắt xích có đoạn thứ i (1=< i =< N)

Hai số cạnh dịng cách dấu cách OUT fiel xich.out chứa số đơn vị thời gian thực Ví dụ

xich.inp

4

xich.out

(7)

BỘ ĐỀ ÔN TẬP HỌC KỲ – LỚP 11TH

3

3

Thuật toán:

- Sắp xếp số đoạn xích tăng dần - Ln xử lý đoạn xích có độ dài theo cách chặt đem nối đoạn

xích khác

- Xử lý chặt từ đoạn xích ngắn nhất, tăng dần khơng cịn đoạn xích ngắn Chặt đoạn xích ngắn (có độ dài lớn 1) theo cách chặt dần mắt xích đem nối đoạn xích khác, có độ dài

- Việc chặt-hàn dừng lại số đoạn xích cịn

(8)

BỘ ĐỀ ÔN TẬP HỌC KỲ – LỚP 11TH CHUYÊN ĐỀ QUY HOẠCH ĐỘNG

Bài1 : Dãy tăng dài :

Cho dãy A gồm n số nguyên, ký hiệu [a0, a1, , an-1] Tìm dãy đơn điệu tăng dài

nhất dãy A, biết dãy A dãy có từ A cách xóa số phân tử A Ví dụ: dãy [1, 5, 9, 2, 3, 11, 8, 10, 4] có dãy đơn điệu tăng dài [1, 2, 3, 8, 10]

Dữ liệu vào file DCT.INP:

- dòng ghi số n (1<=n<=10000)

- dòng thứ i số n dong dòng ghi số (0<=ai<=30000)

Kết file DCT.OUT dòng ghi m số lượng phần tử dãy tăng dài tìm m dong sau dịng ghi phần tử dãy tăng tìm

Ví dụ

DCT.INP

DCT.OUT

5 10

7

Bài - Tam giác số

Hình sau mơ tả tam giác số có số hàng N=5: 7

3 8 8 1 0 2 7 4 4 4 5 2 6 5

Đi từ đỉnh (số 7) đến đáy tam giác đường gấp khúc, bước từ số hàng xuống hai số đứng kề bên phải hay bên trái hàng dưới, cộng số đường lại ta tổng

Ví dụ: đường có tổng S=26, đường 7 có tổng S=23

Trong hình trên, tổng Smax=30 theo đường tổng lớn tất tổng

(9)

BỘ ĐỀ ÔN TẬP HỌC KỲ – LỚP 11TH File INPUT.TXT có dạng sau:

Dịng thứ 1: có số N số hàng tam giác số (0<N<100)

N dòng tiếp theo, từ dòng thứ đến dịng thứ N+1: dịng thứ i có (i-1) số cách dấu trống (space)

Bài CHIA KẸO

Có N gói kẹo, gói thứ i có Ai kẹo Khơng bóc gói kẹo nào, cần chia N gói kẹo thành hai phần cho độ chênh lệch số kẹo hai gói

Dữ liệu vào file "chiakeo.inp" có dạng :

- Dịng số N(N<=100);

- Dòng thứ hai N số Ai(i=1, 2, , N; Ai <=100)

Kết file "chiakeo.out" có dạng:

- Dòng đầu độ chênh lệch nhỏ hai phần

- Dịng hai dãy N số, si =1 gói thứ i thuộc phần 1, si=2 gói thứ i thuộc phần

Hướng dẫn:

Với số M bất kì, ta biết có tồn cách chọn gói kẹo để tổng số kẹo gói chọn M khơng, tốn giải Vì đơn giản ta cần chọn số M cho M gần với Ai/2 (với i =1,2, ,N) Sau xếp gói kẹo để tổng M vào phần một, phần thứ hai gồm gói kẹo cịn lại Để kiểm tra điều ta xây dựng tất tổng có N gói kẹo cách: ban đầu chưa có tổng sinh Làm với gói kẹo từ đến N, với gói kẹo thứ i, ta kiểm tra xem có tổng sinh ra, giả sử tổng x1, x2, , xt đến bước sinh tổng x1, x2, , xt Ai x1+Ai, x2+Ai, , xt+Ai.Với N gói kẹo, mà gói có khơng q 100 kẹo tổng số kẹo không vượt N*100 <= 10000 kẹo Dùng mảng đánh dấu D, sinh tổng k D[k] = ngược lại D[k] =

Bài toán 4: XẾP HÀNG MUA VÉ

Có N người hàng mua vé dự buổi hoà nhạc Ta đánh số họ từ đến n theo thứ tự đứng hàng Mỗi người cần mua vé, song người bán vé phép bán cho người tối đa vé Vì số người rời hàng nhờ người đứng trước mua hộ vé Biết ti thời gian cần thiết để người i mua xong vé cho Nếu người i+1 rời khỏi hàng nhờ người i mua hộ vé thời gian để người thứ i mua vé cho hai người ri Yêu cầu: Xác định xem người cần rời khỏi hàng nhờ người đứng trước mua vé để tổng thời gian phục vụ bán vé nhỏ

Dữ liệu: Vào từ file TICK.INP

- Dòng chứa số n (1<N<2001) - Dòng thứ ghi N số nguyên dương t1, t2, ,tn

(10)

BỘ ĐỀ ÔN TẬP HỌC KỲ – LỚP 11TH - Dòng ghi tổng số thời gian phục vụ

- Dòng ghi số khách hàng cần rời khỏi hàng (nếu khơng có cần rời khỏi hàng quy ước ghi số 0)

Ví dụ :

tick.inp tick.out

2 4 10 10

18 HƯỚNG DẪN:

Gọi A[i] thời gian nhỏ để mua vé xét đến người thứ i Với người thứ i có hai trường hợp:

- Bước khỏi hàng: A[i]=A[i-2]+R[i-1] - Không bước khỏi hàng: A[i]=A[i-1]+T[i] Vậy A[i]=Min{A[i-2]+R[i-1],A[i-1]+T[i]}

Sử dụng mảng K: Đánh dấu người rời khỏi hàng Bài tốn CẮT HÌNH CHỮ NHẬT

Người ta dùng máy cắt để cắt hình chữ nhật có kích thước MxN (N, M nguyên dương ≤ 100) thành số hình vng có kích thước ngun dương có cạnh song song với cạnh hình chữ nhật ban đầu Máy cắt cắt nhát theo phương song song với hai cạnh hình chữ nhật

Dữ liệu vào từ file văn CUT.INP

- Ghi kích thứơc M,N cách dấu trắng Kết quả: ghi file văn CUT.OUT

- Dịng đầu ghi số k số hình vng tạo - Dịng thứ hai ghi kích thước k thình vng

cut.inp cut.out

3 2 HƯỚNG DẪN:

Ta lập hàm QHD: F[i,j] cho số hình vng cắt từ hình chữ nhật (HCN)

kích thước i*j Dễ thấy:

- HCN có cạnh F[i,i]=1 - HCN có kích thước a*b (1<=n, a <= b):

Ta gọi nhát cắt "hoàn toàn" chia HCN thành HCN khác, nghĩa khơng "lơ lửng" HCN

Nhận xét (dễ dàng chứng minh): Khi cắt HCN a*b, nhát cắt hồn tồn có nhất nhát cắt làm cho F[a,b] nhỏ nhất, nhát cắt ta chọn bước cắt Tất bạn dựa nhận xét để giải tốn

Từ theo tư tưởng tích luỹ QHD, F[a,b] xác định cách thử tất nhát cắt

(11)

BỘ ĐỀ ÔN TẬP HỌC KỲ – LỚP 11TH

F[a,b]= min{ F[a,k]+F[a,b-k]; F[i,b]+F[a-i,b]} với 1<= k<=b div 2, 1<=i<=a div HCN a*b chia thành HCN a*k a*(b-k) i*b (a-i)*b

Bài Dãy có tổng S:

Cho dãy a1,a2, an Tìm dãy dãy có tổng S

Hướng dẫn

Đặt L[i,t)=1 tạo tổng t từ dãy dãy gồm phần tử a1, a2, , ai Ngược lại L[i,t)=0 Nếu L[n,S)=1 đáp án tốn “có”

Ta tính L[i,t] theo cơng thức: L[i,t]=1 L[i–1,t]=1 L[i–1,t–a[i]]=1

Cài đặt

Nếu áp dụng cơng thức ta cần dùng bảng phương án hai chiều Ta nhận xét để tính dòng thứ i, ta cần dòng i–1 Bảng phương án cần mảng chiều L[0 S] tính sau:

L[t]:=0; L[0]:=1; for i := to n

for t := S downto a[i]

if (L[t]=0) and (L[t–a[i]]=1) then L[t]:=1; BÀI : Xếp va ly(A)

Một va ly chứa W đơn vị trọng lượng.có n đồ vật vật có trọng lượng A[i] có giá trị C[i] hỏi lên chọn loại đồ vật đẻ xếp vào valy cho tổng giá trị valy lớn nht

Dữ liệu vào file valy.inp dong số N W, dòng thứ i số N dòng dòng ghi hai số A[i] C[i]

Kết : file valy.out theo quy cách sau

dòng tổng giá trị lớn tìm valy

dòng dòng ghi hai số i (là số hiệu vật chọn) x (là số lượng chọn vật i)

Ví dụ

valy.inp valy.out 10

5 90 16

108 2

hướng dẫn : dùng mảng chiều gọi D[i] tổng giá trị lớn thể tích i, D[i]=Max(D[i-A[j]] + C[j]) víi mäi 1<=j<=n 1<=i<=W

kết giá trị lớn mảng D ta xây dựng mảng chọn với Chon[i] 1<=i<=W giá trị tối ưu phương án chọn i vật chọn cuối Chon[i]

Bài Cho hai dãy số nguyên (a1,a2, ,am), (b1,b2, ,bn) Tìm dãy chung có độ dài lớn hai dãy (coi dãy khơng có số nguyên dãy dãy có độ dài 0)

Lời giải

Chúng ta thấy độ phức tạp toán phụ thuộc vào hai số m, n Xét hai trường hợp:

+Trường hợp1: m=0 n=0

Đây trường hợp đặc biệt, có dãy chung hai dãy có độ dài Vì dãy chung có độ dài lớn chúng có độ dài

(12)

BỘ ĐỀ ÔN TẬP HỌC KỲ – LỚP 11TH

Trong trường hợp này, ta xét tốn nhỏ tìm dãy chung có độ dài lớn hai dãy (a1,a2, ,ai), (b1,b2, ,bj) với <= i <= m, <= j <= n Gọi l[i,j] độ dài dãy chung lớn hai dãy (a1, ,ai), (b1, ,bj) ; Như ta phải tính tất l[i,j] 0<=i<=m, 0<=j<=n

Chúng ta thấy l[0,0]=0

- Nếu ai # bj l[i, j]=max{l[i-1, j], l[i, j-1]} - Nếu ai=bj l[i, j]= 1+l[i-1, j-1]

Với nhận xét trên, ta hồn tồn tính l[m,n] độ dài dãy chung dài (a1, am), (b1, bn)

Để tìm phần tử dãy con, ta xuất phát từ ô l[m,n] tới ô l[0,0] Giả sử ta l[i,j] Nếu ai=bj ta thêm vào dãy nhảy tới ô l[i-1,j-1] Nếu # bj l[i, j]=l[i-1,j] l[i,j]=l[i, j-1] Nếu l[i,j]=l[i-j]=l[i-1,j] nhảy tới l[i-j]=l[i-1,j], ngược lại nhảy tới ô l[i,j-1]

Bài 8 CÂY XĂNG

Một đại lý kinh doanh xăng dầu có n trạm bán xăng dầu (gọi tắt xăng) đánh số từ đến n đường cao tốc muốn tìm vị trí đặt k bể chứa xăng để cung ứng xăng cho xăng Trên đường cao tốc người ta đặt cột mốc số, cột số Biết vị trí xăng thứ i cột số di (i=1,2, ,n): d1 < d2 < .n u cầu: Tìm vị trí đặt k bể chứa xăng k số n xăng cho khoảng cách lớn từ xăng khơng có bể chứa đến xăng có bể chứa gần nhỏ Dữ liệu: Vào từ file văn VITRI.INP

- Dòng ghi số nguyên dương n, k (n<200, k<30,k - Dòng thứ ghi số d1, d2, ,dn (di số nguyên dương không 320000) Các số dịng ghi cách dấu trắng Kết quả: Ghi file văn VITRI.OUT

File gồm k dòng, dòng ghi số xăng đặt bể chứa xăng Ví dụ:

vitri.inp vitri.out

5 12 19 20 27

2

Tư tưởng thuật toán:

Đây toán tối ưu, nên phương pháp tốt mà chọn để giải Quy Hoạch Động Gọi S[i,j] khoảng cách nhỏ cần tìm bố trí i bể xăng, bể xăng thứ i bố trí xăng j Dễ thấy s[1,j] = d[j]-d[1], s[i,i] = 0 (vì i bể xăng bố trí i xăng liên tiếp lên) Ta tìm cách bố trí bể xăng Nhận thấy bể xăng i bố trí từ xăng i đến xăng n - (k-i) Công thức quy hoạch động: s[i,j]:= Max(s[i-1,h],ff(h,j)); trong đó: h vị trí bố trí bể xăng i -1 bố trí bể xăng i vị trí j, h: i-1 … j-1. Còn ff(h,j) khoảng cách lớn xăng tới bể xăng gần (các xăng nằm bể xăng i-1 i, nói cách khác xăng nằm giũa cây xăng h cây xăng j) Việc tính ff(h,j) đơn giản (tham khảo chương trình mẫu) Sau xây dựng bảng s, ta tìm ngược lại vị trí đặt bể xăng, để làm điều ta cần có mảng Vtr[i,j]: bể xăng i-1 đặt vị trí

xăng vtr[i,j]

Ngày đăng: 25/02/2021, 08:31

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan