Các tài liệu này được thiết kế theo dạng chuyên đề lý thuyết và hệ thống bài tập tham khảo, luyện tập được đưa ra theo nhiều mức độ cho chuyên đề đó bao quát toàn bộ cho 3 khối và nhiều
Trang 1SỞ GIÁO DỤC VÀ ĐÀO TẠO ĐỒNG NAI
Đơn vị: Trường Thpt Chuyên Lương Thế Vinh
Mã số: (Do HĐKH Sở GD&ĐT ghi)
SÁNG KIẾN KINH NGHIỆM PHÂN LOẠI BÀI TẬP THEO CHUYÊN ĐỀ TIN 10
Người thực hiện: NGUYỄN HOÀNG ANH
Lĩnh vực nghiên cứu:
- Quản lý giáo dục
- Phương pháp dạy học bộ môn: TIN HỌC
(Ghi rõ tên bộ môn)
- Lĩnh vực khác:
(Ghi rõ tên lĩnh vực)
Có đính kèm: Các sản phẩm không thể hiện trong bản in SKKN
Mô hình Đĩa CD (DVD) Phim ảnh Hiện vật khác
(các phim, ảnh, sản phẩm phần mềm)
Năm học: 2014-2015
BM 01-Bìa SKKN
Trang 2SƠ LƯỢC LÝ LỊCH KHOA HỌC
––––––––––––––––––
I THÔNG TIN CHUNG VỀ CÁ NHÂN
1 Họ và tên: NGUYỄN HOÀNG ANH
2 Ngày tháng năm sinh: 08-09-1987
8 Nhiệm vụ được giao: GIẢNG DẠY BỘ MÔN TIN HỌC THPT, PHỤ
TRÁCH MỘT SỐ CHUYÊN ĐỀ CHUYÊN TIN 10, CHỦ NHIỆM LỚP 10 TIN
9 Đơn vị công tác: TRƯỜNG THPT CHUYÊN LƯƠNG THẾ VINH
II TRÌNH ĐỘ ĐÀO TẠO
III KINH NGHIỆM KHOA HỌC
Số năm có kinh nghiệm: 05
o Thuật toán hàm Z
o Thuật toán hàm Z trong ứng dụng xử lý các bài toán về xâu ký tự.
BM02-LLKHSKKN
Trang 3Tên SKKN: PHÂN LOẠI BÀI TẬP THEO CHUYÊN ĐỀ TIN 10
I LÝ DO CHỌN ĐỀ TÀI
chuyên Tin 10 sao cho có thể đáp ứng được yêu cầu của các kỳ thi tuyển chọn học sinh giỏi được đặt ra và cần được định hình một cách cụ thể, phù hợp với từng đối tượng học sinh.
II CƠ SỞ LÝ LUẬN VÀ THỰC TIỄN
a) Trong chương trình giảng dạy chuyên Tin, hiện đang sử dụng bộ tài liệu giáo khoa chuyên Tin (gồm 3 quyển) và một số tài liệu chuyên đề Các tài liệu này được thiết
kế theo dạng chuyên đề lý thuyết và hệ thống bài tập tham khảo, luyện tập được đưa ra theo nhiều mức độ cho chuyên đề đó bao quát toàn bộ cho 3 khối và nhiều trình độ học sinh Song song với hệ thống bài tập đã phân loại còn có nhiều hệ thống bài tập trực tuyến bao gồm cả phân loại theo chuyên đề cụ thể và không phân loại theo chuyên đề cụ thể Khi giảng dạy, giáo viên sẽ dựa vào để chọn lọc ra cho học sinh các bài tập phù hợp.
b) Trong thực tế giảng dạy cho thấy: hệ thống bài tập đã có trong các bộ SGK có thể giúp các em phát triển khả năng tư duy và rèn luyện theo chuyên đề tương đối khá đầy đủ Tuy nhiên, có một số bài khá khó và việc giải các bài này đòi hỏi học sinh phải được tiếp cận một số kỹ thuật lập trình mà chỉ có sau một thời gian tích lũy mới có thể làm được Nếu các em không được giao bài tập phù hợp thì có thể dẫn đến sự chán nản và ảnh hưởng rất lớn đến kết quả học tập Từ đó nhu cầu cần có một hệ thống các bài tập phù hợp với đối tượng học sinh lớp 10 theo từng chuyên đề là cần thiết nên tôi chọn thực hiện đề tài này với mục đích nâng cao hơn nữa hiệu quả trong công tác giảng dạy và bồi dưỡng học sinh giỏi ngay từ khối 10, tạo nền tảng vững chắc cho các em nâng cao hơn nữa kỹ năng và năng lực của mình một cách hoàn thiện.
Trong thời gian thực hiện đề tài, tôi đã tham khảo ý kiến của các giáo viên nhiều kinh nghiệm và có tham gia giảng dạy để có thể đưa ra được một hệ thống bài tập
cơ bản thuộc về các chuyên đề mà tôi phụ trách phù hợp với trình độ và đối tượng học sinh của lớp 10 Tin.
Hệ thống bài tập được xem là một giải pháp mang tính tham khảo, có thể được tùy chỉnh, thêm, bớt tùy vào nhu cầu giảng dạy và trình độ học sinh cụ thể Nó được tổng hợp từ các nguồn bài tập sẵn có (sắp xếp, phân loại lại) và một số bài tập phát triển Song song đó, quá trình dạy học còn áp dụng một số biện pháp tích cực, chủ động giúp học sinh nắm chắc hơn kiến thức và phát triển khả năng diễn đạt thuật toán một cách trôi chảy.
BM03-TMSKKN
Trang 4III TỔ CHỨC THỰC HIỆN CÁC GIẢI PHÁP
1 Giải pháp 1:Phân loại hệ thống bài tập theo từng chuyên đề
a) Trong quá trình giảng dạy từ chuyên đề mở đầu (cơ bản), giáo viên tiến hànhphân loại bài tập và hướng dẫn học sinh luyện tập theo hệ thống từ dễ đến khó, từ cơ bảnđến những bài tập có tính kết hợp và suy luận
b) Hệ thống phân loại bài tập dành cho học sinh lớp 10 chuyên Tin:
Dưới đây là hệ thống bài tập đã được phân loại trong các chuyên đề mà tôi phụtrách ở lớp 10 chuyên Tin năm học 2014-2015
Phần 1: Kỹ thuật lập trình
- Phần cơ bản, làm quen với ngôn ngữ lập trình: Sử dụng hệ thống bài tập trong bộ
tài liệu “Tài liệu giảng dạy lập trình khối THPT” quyển 1 đã được phân loại cụ thể
và hợp lý, phù hợp với trình độ học sinh vừa tiếp cận với bộ môn lập trình Pascal
số hạng bi (1 ≤ i ≤ n), còn bạn thứ hai đưa ra số hạng cj (1 ≤ j ≤ n) thì giácủa lượt chơi đó sẽ là |bi+cj|
Ví dụ: Giả sử dãy số bạn thứ nhất chọn là 1, -2; còn dãy số mà bạn thứ haichọn là 2, 3 Khi đó các khả năng có thể của một lượt chơi là (1, 2), (1, 3), (-
2, 2), (-2, 3) Như vậy, giá nhỏ nhất của một lượt chơi trong số các lượt chơi
có thể là 0 tương ứng với giá của lượt chơi (-2, 2)
Yêu cầu
- Hãy xác định giá nhỏ nhất của một lượt chơi trong số các lượt chơi có thể.Input
Dòng đầu tiên chứa số nguyên dương n (n ≤ 105)
Dòng thứ hai chứa dãy số nguyên b1, b2, , bn (|bi| ≤ 109, i=1, 2, , n)
Dòng thứ hai chứa dãy số nguyên c1, c2, , cn (|ci| ≤ 109, i=1, 2, , n)
Hai số liên tiếp trên một dòng được ghi cách nhau bởi dấu cách
Output
- Ghi ra một dòng duy nhất giá nhỏ nhất tìm được
Trang 5Yêu cầu: Hãy cho biết đoàn du lịch có thể qua cầu hết hay không?
Input:
- Dòng đầu là số nguyên dương N, K (2<=N<=105, (|K| <= 109) Trong đó N
là số lượng du khách K là tải trọng tối đa của cầu
- Dòng tiếp theo chứa N số nguyên Ai (|Ai| <= 102) các số cách nhau một dấu khoảng trắng là trọng lượng của mỗi du khách
No
3 LTVTour2
Các thành viên trong một đoàn du lịch được giới thiệu đến một địa điểm kháthú vị Đoạn đường mà họ sắp đi qua có một cây cầu được đặt tên là cây cầuĐoàn kết Các du khách đi đến đây chỉ được đi qua cầu nếu họ tìm được mộtngười trong đoàn chịu cõng mình qua bên kia Vì yêu cầu tải trọng của cầuchỉ có thể chịu được sức nặng K nên họ phải tìm được người phù hợp vớimình Các cặp sau khi lựa chọn xong thì lần lượt qua cầu và không đượcquay lại đón thêm ai cả (tại một thời điểm chỉ có hai người đang cõng nhauqua cầu)
Trang 6Yêu cầu: Hãy cho biết đoàn du lịch có thể qua cầu hết hay không? Nếu không, cho biết số du khách phải đi đường khác qua sông?
Input:
- Dòng đầu là số nguyên dương N, K (2<=N<=105, (|K| <= 109 ) Trong đó N
là số lượng du khách K là tải trọng tối đa của cầu
- Dòng tiếp theo chứa N số nguyên Ai (|Ai| <= 102) các số cách nhau một dấu khoảng trắng là trọng lượng của mỗi du khách
Output:
- Xuất ra ‘Yes’ nếu đoàn du lịch có thể đi qua hết, ‘No’ trong trường hợp ngược lại Trong trường hợp ‘No’, dòng thứ 2 là số du khách phải đi đường vòng qua sông
6 120
30 43 53 86 70 50 Yes
6 120
30 43 53 100 70 50
No 2
4 LTVSearch1
Cho dãy số nguyên N phần tử A1, A2,…, Anvà số nguyên K Hãy cho biết vị trí xuất hiện đầu tiên của K trong dãy đã cho
Input:
- Dòng đầu là số nguyên dương N, K (2<=N<=105, (|K| <= 109 )
- Dòng tiếp theo chứa N số nguyên Ai (|Ai| <= 109) các số cách nhau một dấu khoảng trắng
Trang 7- Dòng tiếp theo chứa N số nguyên Ai (|Ai| <= 109) các số cách nhau một dấu khoảng trắng.
- Dòng đầu là số nguyên dương N, K (2<=N<=105, (|K| <= 109 )
- Dòng tiếp theo chứa N số nguyên Ai (|Ai| <= 109) các số cách nhau một dấu khoảng trắng
Trang 8Cho xâu S (độ dài không quá 200 ký tự) chỉ bao gồm các ký tự a…z Đếm
số lượng xâu con liên tiếp khác nhau nhận được từ xâu S
xâu con liên tiếp là 7
Cho dãy số nguyên N phần tử A1 , A2,… An Tìm cặp số p,q sao thỏa:
A1 + A2 +… +Ap = Aq + Aq+1 +… +An với 1<= p < q <= N
Input:
- Dòng đầu là số nguyên dương N (2<=N<=105)
- Dòng tiếp theo chứa N số nguyên Ai (|Ai| <= 109) các số cách nhau một dấu khoảng trắng
Output:
- Xuất ra một số duy nhất là số cặp tìm được
Ví dụ:
ESEQ.INP ESEQ.OUT 3
Ví dụ: cho 3 số 123 589 478 ta có thể tạo được số: 123589478
Yêu cầu: Tìm chữ số lớn nhất có thể tạo được từ các số trên
Input:
- Dòng đầu là số nguyên dương N (2<=N<=105)
- Dòng tiếp theo chứa N số nguyên Ai (|Ai| <= 109) các số cách nhau một dấu khoảng trắng
123 589 478 589478123
Trang 9-T dòng tiếp theo, mỗi dòng chứa một số i (4≤ i≤ 100) duy nhất là Fi cần tính.
Output: gồm T dòng, mỗi dòng ghi giá trị Fi.
Giới hạn thời gian: 1s
Ví dụ:
LTVF.IN
524356
253813
2 HELP CONAN12-MAXARR1
Năm ngoái Conan chỉ mới bước vào học Tin học thật sự Thế nhưng anh ta bị đàn em
là Như Quỳnh thách đố bài toán sau:
Cho T ≤ 100000 Mỗi dòng của T có 1 số N (N ≤ 100000) Dãy số A được xây dựngnhư sau:
34
A[2i] = A[i]
A[2i+1] = A[i] + A[i+1]
Nhiệm vụ của bạn là tìm số lớn nhất của dãy A từ 1 với N
Input
Dòng đầu tiên là số T
T dòng sau, mỗi dòng là 1 số N
Output
Có T dòng tương ứng với giá trị lớn nhất của các đoạn
3 Leo cầu thang-LTVSTEPS
Bờm chơi trò chơi điện tử Lucky Luke đến màn phải điều khiển Lucky leo lên một cầuthang gồm n bậc
Trang 10Các bậc thang được đánh số từ 1 đến n từ dưới lên trên Lucky có thể đi lên một bậcthang, hoặc nhảy một bước lên hai bậc thang
Biết ban đầu, Lucky đứng ở sàn nhà
Chơi đến đây, Bờm chợt nảy ra câu hỏi: có bao nhiêu cách để Lucky leo hết được cầuthang? (nghĩa là leo đến bậc thang thứ n) Bờm muốn nhờ bạn trả lời câu hỏi này
In ra số cách Lucky leo hết cầu thang
4 Leo cầu thang-LTVSTEPS2
Bờm chơi trò chơi điện tử Lucky Luke đến màn phải điều khiển Lucky leo lên một cầuthang gồm n bậc
Các bậc thang được đánh số từ 1 đến n từ dưới lên trên Lucky có thể đi lên một bậcthang, hoặc nhảy một bước lên hai bậc thang Tuy nhiên ở level này, một số bậc cầuthang có thể bị hỏng nên Lucky không thể nhảy đến bậc đó
Biết ban đầu, Lucky đứng ở sàn nhà
Chơi đến đây, Bờm chợt nảy ra câu hỏi: có bao nhiêu cách để Lucky leo hết được cầuthang? (nghĩa là leo đến bậc thang thứ n) Bờm muốn nhờ bạn trả lời câu hỏi này
Trang 115 DÃY 2-SUM – TWOSUM – SPOJ
Một dãy các số nguyên không âm A[1 N] được gọi là 2-Sum nếu ta có thể tách dãy đó làm 2 dãy có tổng các giá trị bằng nhau Nghĩa là tồn tại một số k trong đoạn [1 N-1] saocho tổng A[1] + A[2] + … + A[k] = A[k+1] + A[k+2] + … + A[N]
Cho 1 dãy gồm N số nguyên không âm Hãy tìm dãy con gồm các phần tử liên tiếp dài nhất mà cũng là dãy 2-Sum
Input
Dòng đầu tiên chứa số nguyên N (2 <= N <= 5000)
N dòng tiếp theo, dòng thứ i chứa giá trị của phần tử A[i] của dãy (0 <= A[i] <= 200000)Output
Xuất ra độ dài lớn nhất của dãy 2-Sum tìm được Nếu không có kết quả thì in ra 0
Trang 136 BUS – NKBUS – SPOJ
Một xe buýt của công ty có nhiệm vụ đón nhân viên đến trụ sở làm việc Trên hành trình,
xe buýt sẽ tiếp nhận nhân viên đứng chờ ở các điểm hẹn nếu như xe còn chỗ trống Xe buýt có thể đỗ lại để chờ những công nhân chưa kịp đến điểm hẹn
Cho biết thời điểm mà mỗi nhân viên đến điểm hẹn của mình và thời điểm qua mỗi điểm hẹn của xe buýt Giả thiết rằng xe buýt đến điểm hẹn đầu tiên tại thời điểm 0 và thời gian xếp khách lên xe được bằng 0
Xe buýt cần phải chở một số lượng nhiều nhất các nhân viên có thể được đến trụ sở Hãy xác định khoảng thời gian ngắn nhất để xe buýt thực hiện công việc
là các thời điểm đến điểm hẹn của k nhân viên
Kết qủa
Gồm một dòng duy nhất, là thời gian ngắn nhất tìm được
Giới hạn
1 ≤ n ≤ 200000, 1 ≤ m ≤ 20000
Tổng số nhân viên không vượt quá 200000
Kết quả không vượt quá 231-1
Trang 14Giải thích: Trên đường đến công ty có 3 trạm xe buýt Từ trạm 1 đến trạm 2, trạm 2 đến trạm 3, và từ trạm 3 đến công ty lần lượt mất 3, 1 và 5 đơn vị thời gian Xe buýt có thể đi như sau: đến thẳng trạm 2, đón người thứ 2, đến trạm 3, chờ 1 đơn vị thời gian để đón người duy nhất ở trạm này, và cuối cùng đến công ty Tổng cộng xe buýt đi mất 3 + 1 + 1+ 5 = 10 đơn vị thời gian.
7 LATGACH3 – M3TILE – SPOJ
Đếm số cách lát hình chữ nhật 3*n bằng các domino 2*1, dữ liệu vào gồm nhiều test, kết thúc là -1, xuất ra tương ứng các test (0 <= n <= 30)
Trang 15rời khỏi hàng và nhờ người i mua hộ vé thì thời gian để người thứ i mua được vé cho cả hai người là ri.
Yêu cầu: Xác định xem những người nào cần rời khỏi hàng và nhờ người đứng trước mua hộ vé để tổng thời gian phục vụ bán vé là nhỏ nhất
Dữ liệu
Dòng đầu tiên chứa số N (1 ≤ N ≤ 60000)
Dòng thứ 2 ghi N số nguyên dương t1, t2, , tN (1 ≤ ti ≤ 30000)Dòng thứ ba ghi N-1 số nguyên dương r1, r2, , rN-1 (1 ≤ ri ≤ 30000)
khoảng cách giữa hai máy liên tiếp Bạn hãy giúp các học sinh này tìm cách nối mạng thoả mãn yêu cầu đặt ra sao cho tổng độ dài cáp nối phải sử dụng là ít nhất
Dữ liệu
Dòng đầu tiên chứa số lượng máy N (1 ≤ N ≤ 25000)
Dòng thứ i trong số N-1 dòng tiếp theo chứa các khoảng cách từ máy i đến máy i+1 (i=1,2, ,N-1) Giả thiết rằng khoảng cách từ máy 1 đến máy N không vượt quá 106
Kết quả
Ghi ra độ dài của cáp nối cần sử dụng
NKCABLE.IN NKCABLE O
Trang 16khoảng cách giữa hai máy liên tiếp Bạn hãy giúp các học sinh này tìm cách nối mạng thoả mãn yêu cầu đặt ra sao cho tổng độ dài cáp nối phải sử dụng là ít nhất Và ứng với phương án đó, các học sinh phải lên sơ đồ các máy cần nối với nhau.
Dữ liệu
Dòng đầu tiên chứa số lượng máy N (1 ≤ N ≤ 25000)
Dòng thứ i trong số N-1 dòng tiếp theo chứa các khoảng cách từ máy i đến máy i+1 (i=1,2, ,N-1) Giả thiết rằng khoảng cách từ máy 1 đến máy N không vượt quá 106
Kết quả
Ghi ra độ dài của cáp nối cần sử dụng
Một số dòng phía sau, mỗi dòng ghi số thứ tự của các máy được nối với nhau
NKCABLE.INP NKCABLE OUT
Trang 17P
LATGACH O UT
Input
Gồm nhiều test, dòng đầu ghi số lượng test T ( T<=100 )
T dòng sau mỗi dòng ghi một số N
Output
Ghi ra T dòng là số cách lát tương ứng
12 0 0 Pairs – M00PAIR – SPOJ
Ban đầu dãy số có 1 số 1 Dãy biến đổi theo quy tắc : 0 thành 1 0 và 1 thành 0 1
Trang 18Dãy số nguyên, không biết trước số lượng nhưng số nào <=1000.
13 KHỐI LẬP PHƯƠNG LỚN NHẤT – MAXCUB – SPOJ
Cho một khối lập phương kích thước n chia làm n3 khối lập phương đơn vị Mỗi khối lập phương đơn vị chứa 1 số nguyên Bạn hãy tìm một khối lập phương con của khối lập phương đã cho sao cho tổng các số trong khối lập phương đó là lớn nhất
Input
- Dòng đầu: số lượng test
– Tiếp theo là các test, mỗi test gồm: dòng đầu là n Sau đó n nhóm dòng thể hiện lớp cắt của hình lập phương nhìn từ mặt trước từ gần ra xa, mỗi nhóm gồm n dòng, mỗi dòng gồm n số liệt kê các số trên lớp cắt từ trên xuống dưới, trái qua phải
Chú ý: n <= 30 Giá trị của khối lập phương đơn vị thuộc kiểu integer
Trang 19Dòng đầu tiên chứa số T là số test
T dòng tiếp theo mỗi dòng chứa 2 số N và K, với 1<=K<=N<=25
Trang 20Giải thích : 7 cách chia đó là (ABC)(D) , (ABD)(C) , (ADC)(B) , (DBC)(A) , (AB)(CD) ,(AC)(BD) , (BC)(AD)
16 Bulls and Cows- CTNBULLS
Nông dân john muốn sắp xếp n con bò(bao gồm cả bò đực và bò cái) của ông ta trên 1 hàng Ông ta biết rằng những con bò đực rất hung hăng – Nếu 2 con bò đực đứng quá gầnnhau thì chúng sẽ trở nên hung dữ và bắt đầu húc nhau , vì thế chúng sẽ phá hòng mất trật
tự trên hàng mà ông ta vừa sắp xếp được
Theo kinh nghiệm lâu năm của mình , john biết được nếu ở giữa hai con bò đực có ít nhất
K con bò cái thì sẽ ngăn chặn được việc chúng húc nhau (+_+)
Trang 21Vì thế , ông ta nhờ các Vcoders giúp đỡ để tính toán xem có bao nhiêu cách sắp xếp đàn
bò của ông ta lại sao cho không có “chiến tranh” xảy ra giữa những chú bò (^_^), (Tất cả những con bò đực và những con bò cái đều giống nhau) Hai dãy ( B1 Bn ) và (A1 An )được cho là khác nhau nếu tồn tại một vị trí I (1<=i<=n) sao cho Ai <> Bi
1<=N<=100000 0<=k<=n
Input : gồm 1 dòng duy nhất chứa 2 số n và k cách nhau 1 dấu cách
Output: gồm duy nhất một số là kết quả theo modun 2111992
Cho N số nguyên dương tạo thành dãy A={A1, A2, , AN} Tìm ra một dãy con của dãy
A (không nhất thiết là các phần tử liên tiếp trong dãy) có tổng bằng S cho trước
Input:
Dòng đầu tiên ghi hai số nguyên dương N và S (0<N≤200) và S (0<S≤40000)
Các dòng tiếp theo lần lượt ghi N số hạng của dãy A là các số A1, A2, ,
AN (0<Ai≤200)
Output: