Tải bản đầy đủ (.docx) (20 trang)

SKKN sử dụng thuật toán đánh dấu trong bồi dưỡng học sinh giỏi môn tin học

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (468.34 KB, 20 trang )

SỞ GIÁO DỤC VÀ ĐÀO TẠO THANH HOÁ

TRƯỜNG THPT HẬU LỘC 2
----- *** -----

SÁNG KIẾN KINH NGHIỆM

SỬ DỤNG THUẬT TOÁN ĐÁNH DẤU
TRONG BỒI DƯỠNG HỌC SINH GIỎI MÔN TIN HỌC

Người thực hiện: Nguyễn Thị Hà
Chức vụ: Giáo viên
SKKN thuộc môn: Tin học

THANH HOÁ, NĂM 2021


MỤC LỤC


1- MỞ ĐẦU
1.1. Lí do chọn đề tài
Trong chương trình Tin học lớp 11, các kiến thức Sách giáo khoa (SGK)
chỉ ở mức độ giới thiệu các kiến thức cơ bản, giải các bài toán đơn giản với dữ
liệu nhỏ. Mà đề thi Học sinh giỏi (HSG) cấp Tỉnh thường giới hạn dữ liệu lớn và
thời gian chạy thuật toán chủ yếu là 1 giây, nên việc tiếp cận kiến thức để đáp
ứng cho kì thi HSG cấp tỉnh là rất khó khăn đối với giáo viên (GV) và học sinh
(HS) của các trường THPT khơng chun.
Để nâng cao trình độ chuyên môn nghiệp vụ, GV phải thường xuyên học
tập, trau dồi, nghiên cứu tài liệu nâng cao, các chuyên đề lập trình ngồi SGK.
Một trong những chun đề đó phải kể đến thuật tốn đánh dấu trong lập trình.


Thuật toán đánh dấu được vận dụng vào nhiều dạng bài toán, nhất là dạng
bài toán đếm. Với những bài toán đếm, nếu ta dùng cách đếm thơng thường thì
thời gian chạy lâu. Trong khi đó, nếu sử dụng thuật tốn đánh dấu thì có thể
khắc phục được điều đó. Trong sách “Tài liệu giáo khoa Chuyên tin - Quyển 1”
có sử dụng thuật toán đánh dấu ở một số nội dung như: sàng số nguyên tố (trang
21), sắp xếp bằng đếm phân phối (trang 47). Nếu HS được trang bị kiến thức về
thuật tốn đánh dấu thì các em sẽ dễ dàng hiểu hai thuật tốn này. Ngồi ra, cịn
rất nhiều bài tập khác trong các sách tham khảo, đề thi các cấp, website luyện thi
HSG có thể sử dụng thuật toán đánh dấu nên việc giảng dạy thuật toán đánh dấu
là việc làm cần thiết để nâng cao chất lượng dạy và học HSG mơn Tin học.
Vì những lí do đó tơi đã chọn nghiên cứu và viết Sáng kiến kinh nghiệm
(SKKN): “Sử dụng thuật toán đánh dấu trong bồi dưỡng học sinh giỏi môn
Tin học”. Tôi mong muốn sáng kiến sẽ trở thành một phần tài liệu tham khảo
hữu ích trong cơng tác bồi dưỡng HSG mơn Tin học, góp phần nâng cao chất
lượng dạy và học HSG mơn Tin học trong trường THPT.
1.2. Mục đích nghiên cứu
Tơi nghiên cứu sáng kiến nhằm mục tiêu xây dựng một phần tài liệu tham
khảo hữu ích cho cả GV và HS, góp phần nâng cao chất lượng dạy và học HSG
mơn Tin học, cụ thể:
- Đối với giáo viên: góp phần nâng cao năng lực tự học, tự bồi dưỡng cho
GV. Giúp GV nâng cao kiến thức trong việc lựa chọn và sử dụng thuật tốn có
hiệu quả vào các dạng bài toán khác nhau. Tập hợp và xây dựng các bài toán
cùng dạng thành các chuyên đề dạy học HSG môn Tin học.
- Đối với HS: giúp HS rèn luyện tính kiên trì, cẩn thận, nâng cao năng lực
tự học, năng lực phân tích và tổng hợp, năng lực giải quyết vấn đề… để HS có
thể hiểu, nhận dạng và vận dụng thuật toán đánh dấu vào từng bài toán cụ thể.
1.3. Đối tượng nghiên cứu
Học sinh khá, giỏi mơn Tin học của trường THPT Hậu Lộc 2. Có sử dụng
máy tính để chạy và test chương trình.
Đề tài cịn có thể giúp cho GV Tin học trong tổ tham khảo, trao đổi kinh

nghiệm với nhau.
3


1.4. Phương pháp nghiên cứu
1.4.1. Phương pháp nghiên cứu lí thuyết
Phân tích thuật tốn đánh dấu và khả năng vận dụng thuật toán vào một số bài
tập trong:
- Các đề thi HSG cấp Tỉnh môn Tin học.
- Một số thuật toán và bài tập trong sách “Tài liệu giáo khoa Chuyên tin,
Quyển 1”, “Tài liệu Chuyên tin, Bài tập, Quyển 1”.
- Một số bài tập ở các trang web: />…
1.4.2. Phương pháp nghiên cứu thực tiễn
 Phương pháp thu thập số liệu
Thu thập số liệu một phần kết quả thi HSG cấp Tỉnh mơn Tin học của Tỉnh
Thanh Hóa để đưa ra nhận xét về việc lựa chọn thuật toán của HS qua một số
năm.
Thu thập số liệu, lập bảng thống kê kết quả thi HSG cấp Tỉnh môn Tin học của
trường THPT Hậu Lộc 2 qua năm học 2018 - 2019, 2020 - 2021 để đánh giá kết
quả đạt được sau khi áp dụng sáng kiến trong thực tế.
 Phương pháp thực nghiệm khoa học
Tác giả đã trao đổi, thảo luận với nhóm chun mơn, xây dựng chun đề thuật
toán đánh dấu và áp dụng các biện pháp thực hiện nội dung sáng kiến vào việc
bồi dưỡng đội tuyển HSG môn Tin học của trường THPT Hậu Lộc 2 năm học
2020 - 2021 (gồm 02 em HS).
 Phương pháp phân tích tổng kết kinh nghiệm
Kết hợp với GV cùng nhóm chun mơn tiến hành thảo luận, phân tích kết quả
đạt được sau khi thực hiện sáng kiến. Từ đó, tác giả rút kinh nghiệm, hồn thiện
sáng kiến và đưa ra hướng phát triển để áp dụng sáng kiến vào công tác bồi
dưỡng HSG đạt hiệu quả cao hơn trong những năm học tiếp theo.


4


2- NỘI DUNG SÁNG KIẾN KINH NGHIỆM
2.1. Cơ sở lí luận của Sáng kiến kinh nghiệm
Nghị quyết số 29 ngày 04 tháng 11 năm 2013 của Hội nghị Trung ương 8
khóa XI về đổi mới căn bản, tồn diện giáo dục và đào tạo, đáp ứng u cầu
cơng nghiệp hóa, hiện đại hóa trong điều kiện kinh tế thị trường định hướng xã
hội chủ nghĩa và hội nhập quốc tế đã nêu rõ nhiệm vụ, giải pháp cụ thể trong
giáo dục.
Sở GD&ĐT Thanh Hóa cũng đã có nhiều văn bản hướng dẫn, chỉ đạo về
việc đẩy mạnh hiệu quả giảng dạy môn Tin học và ứng dụng CNTT vào giảng
dạy. Do đó, kì thi chọn HSG cấp tỉnh mơn Tin học đã được quan tâm, chú trọng
và khuyến khích tham gia nhiều hơn. Công tác bồi dưỡng HSG môn Tin học
cũng trở thành nhiệm vụ cần thiết và quan trọng đối với mỗi GV. Để nâng cao
chất lượng trong việc bồi dưỡng HSG môn Tin học, GV phải không ngừng học
hỏi, nâng cao trình độ chun mơn để tiếp cận nội dung thi HSG môn Tin học
cấp Tỉnh.
Trong các đề thi HSG cấp Tỉnh qua một số năm, có một số bài toán đếm
yêu cầu dữ liệu lớn và giới hạn thời gian chạy nhỏ (thường là 1 giây). Nếu
không có cách tổ chức dữ liệu và thuật tốn hiệu quả thì khó đạt điểm tối đa.
Một trong những cách tiếp cận để giải quyết các bài tốn đó là sử dụng Thuật
tốn đánh dấu (hay cịn gọi là Thuật tốn lùa bị vào chuồng). Để hiểu rõ hơn về
thuật tốn đánh dấu tơi lấy ví dụ Bài 2 (trang 73 - SGK Tin học 11), đề bài như
sau: “Viết chương trình nhập từ bàn phím một xâu kí tự S và thơng báo ra màn
hình số lần xuất hiện của mỗi chữ cái tiếng Anh trong S (không phân biệt chữ
hoa hay chữ thường)”. Có nhiều cách để giải bài toán này:
- Cách 1: sử dụng thuật toán đếm thơng thường. Ta duyệt tồn bộ n kí tự
trong xâu S, mỗi lần duyệt ta thực hiện thao tác đếm một kí tự. Sau 26 lần duyệt

ứng với 26 kí tự của bảng chữ cái tiếng Anh sẽ thu được kết quả cần tìm.
- Cách 2: sử dụng thuật tốn đánh dấu. Ta khai báo mảng tĩnh d (var
d:array[‘A’..’Z’] of Longint;) dùng để đếm số lần xuất hiện của 26 chữ cái tiếng
Anh. Quy ước d[ch] là số lần xuất hiện của kí tự ch. Ban đầu, khởi tạo tất cả các
phần tử của d là 0. Để đảm bảo việc không phân biệt chữ hoa chữ thường, khi
duyệt đến kí tự ch ta thực hiện thao tác tăng giá trị d[upcase(ch)] lên 1 đơn vị
bằng câu lệnh d[upcase(ch)]:=d[upcase(ch)]+1;
Như vậy, sử dụng thuật tốn đánh dấu sẽ tìm ra lời giải của bài tốn chỉ với một
vịng lặp. Sử dụng thuật tốn đếm thơng thường sẽ phải thực hiện 26 vịng lặp
như vậy mới tìm ra kết quả.
Qua ví dụ trên, ta thấy rằng yêu cầu đề bài không giới hạn độ lớn của dữ
liệu, khơng có bộ test kiểm chứng, số thao tác đếm cũng khơng nhiều thì GV có
thể hướng dẫn HS làm bài bằng thuật tốn đếm thông thường. Nhưng trong công
tác bồi dưỡng HSG, GV cần cho HS tiếp cận với những bài tốn đếm có giới
hạn dữ liệu lớn khi đó thuật tốn đếm thơng thường khó đáp ứng được yêu cầu
về thời gian chạy thuật toán.
5


2.2. Thực trạng của vấn đề trước khi áp dụng Sáng kiến kinh nghiệm
Có ba ngun chính dẫn đến việc HS khơng đạt điểm tối đa trong các dạng bài
tốn đếm nêu trên, đó là:
- Một số GV chưa biết thuật tốn đánh dấu, thường sử dụng cách làm
thơng thường để hướng dẫn HS giải các dạng bài toán đếm. GV chưa tiếp cận
được với phần mềm Themis chấm HSG mơn Tin học, nên thường khơng kiểm
tra được độ chính xác của các thuật tốn. Vì vậy, khơng nghiên cứu, tìm hiểu và
lựa chọn được thuật tốn phù hợp cho từng bài toán để xây dựng các chuyên đề
giảng dạy cho HS.
- Ở một số trường, HS không hứng thú với việc tham gia đội tuyển HSG
môn Tin học nên cơng tác thu thút HS có năng lực tham gia đội tuyển là khó

khăn. Bản thân HS khơng phát huy năng lực tự học, tự tìm tịi các thuật tốn từ
các nguồn tài liệu tham khảo khác, thường chỉ làm theo những gì GV hướng
dẫn. Vì vậy, việc học tập chưa hiệu quả, chưa biết nhận dạng và lựa chọn được
thuật tốn thích hợp với từng bài tốn để đạt điểm tối đa.
- Đối với dữ liệu lớn, thuật toán đếm thông thường chưa tối ưu về mặt
thời gian chạy.
2.3. Các giải pháp đã sử dụng để giải quyết vấn đề
Áp dụng sáng kiến vào giảng dạy chuyên đề thuật toán đánh dấu, gồm các bước
sau:
Bước 1: Giao bài tập, yêu cầu HS nghiên cứu và làm bài bằng phương
pháp thơng thường.
Bước 2: Giới thiệu thuật tốn đánh dấu và hướng dẫn HS sử dụng để giải
các bài tập trên.
Bước 3: Giao bài tập vận dụng để HS rèn luyện cách sử dụng thuật tốn
đánh dấu. Nếu HS có khó khăn, GV sẽ hướng dẫn và gợi ý.
Bước 4: Cho HS luyện tập các bài tập theo các mức độ khác nhau. Ngồi
ra, GV u cầu HS tự tìm và giải các bài tập khác trên các website
để vận dụng thuật toán một cách
thành thạo hơn.
Thực hiện việc phân loại, phân luồng thật tốt các đối tượng HS để có thể áp
dụng sáng kiến một cách hiệu quả nhất: tùy thuộc vào khả năng của học sinh để
giao yêu cầu, hướng dẫn và bài tập cụ thể trong chuyên đề đã xây dựng.
Để khắc phục được những hạn chế của thuật tốn đếm thơng thường, tơi
đã xây dựng chuyên đề thuật toán đánh dấu để giải các bài toán đếm và thực
hiện giảng dạy cho HS tại trường trong năm học 2020 - 2021. Chuyên đề gồm 4
nội dung sau:
- Giới thiệu thuật toán đánh dấu.
- Sử dụng thuật toán đánh dấu để giải một số bài toán.
- Bài tập vận dụng.
- Bài tập luyện tập.


6


a. Giới thiệu thuật toán đánh dấu
Thuật toán đánh dấu phần tử thường được sử dụng khi giải các bài toán cần đến
việc chọn những phần tử theo yêu cầu nào đó.
Để chọn phần tử, ta thực hiện đánh dấu phần tử đó bằng cách sử dụng một mảng
d (thường có kiểu phần tử là boolean).
- Phần tử thứ i được chọn ta thực hiện đánh dấu d[i]:=true;
- Phần tử thứ i khơng được chọn ta đánh dấu d[i]:=false;
Sau đó, tùy thuộc vào yêu cầu cụ thể để từng bước tìm ra kết quả của bài tốn
dựa trên mảng đánh dấu d nêu trên.
b. Sử dụng thuật toán đánh dấu để giải một số bài toán thi HSG
 Bài 1. Số nhỏ nhất
Cho dãy số nguyên dương: a1,a2,…,an (1≤n≤109; 1≤ai<106; i = 1,2,3,...,n).
Yêu cầu: Tìm số nguyên dương nhỏ nhất không xuất hiện trong dãy số đã cho.
Input: tệp BAI1.INP có cấu trúc
- Dịng 1 chứa số ngun dương n (1≤n≤109);
- Dòng 2 chứa n số nguyên dương a 1, a2,… , an (1≤ai<106). Các số cách
nhau một dấu cách.
Output: tệp BAI1.OUT gồm một dòng chứa số nguyên dương nhỏ nhất tìm
được.
BAI1.INP



BAI1.OUT

BAI1.INP


3
1
10
352
1 5 30 4 65 10 2 37 27 3
Hướng dẫn thuật toán đánh dấu

BAI1.OUT

6

Ta sử dụng mảng d để đánh dấu sự xuất hiện của các phần tử trong danh sách n
số nguyên. Khi đó, d[i] dùng để đánh dấu i có xuất hiện hoặc khơng xuất hiện
trong dãy số.
Khai báo var d:array[1..1000000] of boolean;
Nếu số i xuất hiện trong danh sách thì ta đánh dấu d[i]:=true;
Nếu số i khơng xuất hiện trong danh sách thì ta đánh dấu d[i]:=false;
Khi đó ta có đoạn chương trình đánh dấu như sau:
fillchar(d,sizeof(d),false);
while not eof do
begin
read(i); //Đọc số nguyên i
d[i]:=true; //Đánh dấu i đã xuất hiện
end;
Sau khi đã đánh dấu thì việc tìm số chưa xuất hiện được thực hiện bằng cách xét
từ đầu đến cuối mảng d, gặp số đầu tiên mà d[i]=false thì dừng lại và i chính là

7



số nguyên dương đầu tiên chưa xuất hiện trong dãy số. Đoạn chương trình tìm
kết quả như sau:
i:=1;
while d[i]=true do i:=i+1;
Minh họa từng bước quá trình đánh dấu với test:
BAI1.I BAI1.O
NP
UT

3
352

1

d
i

1
false
false
false
false

2
3
5

2
false

true
true
true

3
false
false
true
true

Giải thích
4
false
false
false
false

5
false
false
false
true







Đánh dấu d[2]:=true;

Đánh dấu d[3]:=true;
Đánh dấu d[5]:=true;

Sau khi đánh dấu thì ta thấy phần tử đầu tiên có kết quả bằng false là d[1] nên 1
là số nhỏ nhất chưa xuất hiện trong dãy số.
• Code tham khảo

Bộ test:
/>usp=sharing





Kết quả: với bộ test đề xuất gồm 20 test, cách giải này đạt 100% số điểm.

8


Bài 2. Thống kê
Cho dãy số nguyên dương a1,a2…an (1≤n≤2×106; 1≤ai≤106, i=1,2,3..,n).
Yêu cầu: Đếm số lượng giá trị khác nhau có trong dãy và đưa ra số lần lặp của
giá trị xuất hiện nhiều nhất.
Input: tệp BAI2.INP có cấu trúc
- Dòng 1: Chứa số nguyên dương n.
- Dòng 2: Chứa n số nguyên dương a1,a2…an cách nhau một dấu cách.
Output: tệp BAI2.OUT chứa số lượng giá trị khác nhau và số lần lặp của giá trị
xuất hiện nhiều nhất cách nhau 1 dấu cách.



BAI2.INP

BAI2.OU
T

10
54
8958482989
• Hướng dẫn thuật tốn đánh dấu
Sử dụng thuật toán đánh dấu để đếm số lần xuất hiện của từng giá trị trong dãy
số. Sau đó, đếm trong mảng đánh dấu các phần tử có xuất hiện (giá trị đếm > 0)
và tìm max của mảng đếm.
• Code tham khảo



Bộ test:

9


/>w?usp=sharing
• Kết quả: với bộ test đề xuất gồm 20 test, cách giải này đạt 100% số điểm.

Bài 3. Đoạn số nguyên
Cho N (N≤103) đoạn số nguyên [ai,bi] (ai≤bi, |bi|≤106)
Yêu cầu: Tìm một số mà số đó thuộc nhiều đoạn số ngun nhất.
Input: tệp BAI3.INP có cấu trúc
- Dịng 1 chứa một số nguyên dương N.
- N dòng tiếp theo là các cặp ai,bi cách nhau một dấu cách

Output: tệp BAI3.OUT gồm 1 số thỏa mãn yêu cầu và số lần xuất hiện của nó,
nếu có nhiều đáp án thì in ra số lớn nhất và số lần xuất hiện của nó.


BAI3.I BAI3.O
NP
UT

5
44
0 10
48
6 10
35
34
• Hướng dẫn thuật tốn đánh dấu
Đọc lần lượt ai, bi rồi dùng thuật toán đánh dấu để đếm sự xuất hiện của các số
trong đoạn [ai,bi]. Tìm max của mảng đánh dấu là ra kết quả.
• Code tham khảo

10




Bộ test:
/>


Kết quả: với bộ test đề xuất gồm 20 test, cách giải này đạt 100% số điểm.


c. Bài tập vận dụng
 Bài 4. Tam giác vuông
Cho N điểm trên mặt phẳng tọa độ.
Yêu cầu: Đếm số tam giác vuông có cạnh bên song song với trục Ox và Oy trên
trục tọa độ Oxy.
Input: tệp BAI4.INP có cấu trúc
- Dịng đầu tiên chứa N (N≤105) là số lượng điểm trên mặt phẳng tọa độ.
- N dòng tiếp theo, mỗi dòng miêu tả tọa độ X, Y (1≤X, Y≤10 5) của một
điểm trong N điểm trên. (Lưu ý: dữ liệu đảm bảo khơng có 2 điểm trùng nhau).
Output: tệp BAI4.OUT là một dịng chứa kết quả bài tốn.
BAI4.IN
P

BAI4.OU
T

6
10 10
20 10
10 20
20 20

8

11


30 20
30 30

• Hướng dẫn thuật tốn đánh dấu
Ta lần lượt xét các đỉnh a1…an mỗi đỉnh ai này nếu là đỉnh góc vng của tam
giác vng thì số tam giác vng là u*v trong đó u là số đỉnh nằm trên đường
thẳng x=xi sao cho khác ai và v là số đỉnh nằm trên đường y=yi sao cho khác ai.
• Code tham khảo

Bài 5. Từ chuẩn
Một từ được gọi là từ chuẩn nếu tất cả các chữ cái trong bảng chữ cái
tiếng Anh (không phân biệt chữ hoa chữ thường) đều xuất hiện ít nhất 1 lần.
Yêu cầu: Kiểm tra n từ chuẩn vào từ Input.
Input: tệp BAI5.INP có cấu trúc
- Dòng thứ 1 số tự nhiên n số lượng từ (1≤n≤103).
- N dòng tiếp theo, mỗi dòng là 1 từ chỉ gồm các chữ cái viết hoa và viết
thường, 1≤độ dài của từ≤103
Output: tệp BAI5.OUT gồm n dòng, mỗi dòng in YES nếu là từ chuẩn, NO
trong trường hợp ngược lại.


BAI5.INP

BAI5.OU
T

1
NO
Helloworld
• Hướng dẫn thuật tốn đánh dấu
Dùng mảng 26 kí tự để đánh dấu sự xuất hiện của chữ cái (khơng phân biệt chữ
hoa, chữ thường). Sau đó, xét mảng đánh dấu, nếu có một kí tự bất kì khơng
xuất hiện thì khơng thỏa mãn.

• Code tham khảo

12


Bài 6. Hai lớp học
Cô Hà dạy và tổ chức thi cho hai lớp học, lớp 11A 1 có n học sinh có kết
quả thi là a1,a2…an và lớp 11A2 có m học sinh có kết quả thi là b1,b2…bm.
Yêu cầu: Sau khi chấm bài xong cô Hiền muốn biết xem có bao nhiêu cặp hai
bạn học mỗi bạn một lớp mà có điểm bằng nhau.
Input: tệp BAI6.INP có cấu trúc
- Dòng đầu là 2 số nguyên dương n, m (1≤n, m≤106)
- Dòng thứ hai là n số nguyên a1,a2…an (0≤ ai ≤105)
- Dòng thứ ba là m số nguyên b1,b2…bm (0≤ bi ≤105)
Output: tệp BAI6.OUT là 1 số nguyên khơng âm là số cặp 2 bạn có điểm bằng
nhau


BAI6.INP

BAI6.OU
T

89
9
74286424
37212714
5
Giải thích: Có các cặp (a1,b2), (a1,b6), (a2,b8), (a3,b3), (a3, b5), (a6,b8), (a7,b3),
(a7,b5), (a8,b8).

• Hướng dẫn thuật tốn đánh dấu
Vì bảng điểm từ 0 đến 105, ta dùng mảng đếm xem có bao nhiêu điểm 0, điểm 1
… đến điểm 105 của từng lớp ra hai mảng da và db. Số cặp cùng bằng điểm i sẽ
là tích của da[i]*db[i].
• Code tham khảo
13


d. Bài tập luyện tập
 Bài 1. Bạn bè
Hai từ gọi là bạn bè nếu chúng được tạo nên bởi cùng một tập hợp kí tự
giống nhau: Ví dụ S1=’ xxxxxyzzzxzzz’ và S2=’ xzzyzxxx’ là bạn bè vì nó cùng
được tạo bởi tập ký tự {‘x’,’y’,’z’}. Cho ba cặp hai từ, với mỗi cặp in ‘YES’ nếu
hai từ trong cặp là bạn bè và in ‘NO’ nếu chúng không phải là bạn bè.
Input: 6 xâu ký tự (mô tả 6 từ) lần lượt là S1, S2, S3, S4, S5, S6; mỗi xâu trên
một dòng chỉ gồm chữ cái tiếng Anh in thường có độ dài khơng vượt q 106
Output: In ra ba dòng:
- Dòng 1: In ‘YES’ nếu S1 và S2 là bạn bè, ngược lại in ‘NO’
- Dòng 2: In ‘YES’ nếu S3 và S4 là bạn bè, ngược lại in ‘NO’
- Dòng 3: In ‘YES’ nếu S5 và S6 là bạn bè, ngược lại in ‘NO’
INPUT

xxxxxyzzzxzzz
xzzyzxxx
abcabbccccbaaa
aabbbaaaa
azbcxy
abbaa

OUTPUT


YES
NO
NO

Bài 2. Đếm kí tự
Đếm số lần xuất hiện của mỗi kí tự trong S.
Input: Gồm 1 dòng chứa xâu S (độ dài của xâu S≤2×106).
Output: Gồm nhiều dịng chứa kí tự và số lần xuất hiện của nó trong xâu S theo
thứ tự của bảng mã ASCII.


INPUT

OUTP
14


UT

Laptrinh 1 2
11
L1
a1
h1
i1
n1
p1
r1
t1

 Bài 3. Số chính phương nhỏ nhất
Mơt số tự nhiên gọi là số chính phương nếu căn bậc hai của số đó là một
số tự nhiên.
Cho một dãy gồm n số tự nhiên ai (0≤ai<109;n<104; i =1, 2,...,n). Hãy lập trình
tìm ra số chính phương nhỏ nhất không xuất hiện trong dãy số đã cho.
Input: Gồm 02 dòng:
- Dòng 1 ghi giá trị của n.
- Dòng 2 ghi n số tự nhiên của dãy, hai số liền kề cách nhau một dấu cách.
Output: Gồm 01 dòng ghi duy nhất một số chính phương nhỏ nhất khơng xuất
hiện trong dãy số đã cho.
INPUT

OUTPU
T

8
25
16 79 4 9 0 65 1 81
 Bài 4. Phần tử chung
Cho k dãy số nguyên, các số trong dãy thuộc [-10 6..106]. Hãy viết chương
trình tìm số xuất hiện trong k dãy. Nếu khơng có số nào xuất hiện trong k dãy thì
ghi ra kí tự ‘X’, cịn nếu có nhiều số cùng xuất hiện trong k dãy thì ghi số nhỏ
nhất tìm được.
Input: Gồm 2 dòng
3
- Dòng 1: Chứa số nguyên dương k (13
- Dòng 2: Gồm k số lần lượt là độ dài của từng dãy ≤10
- K dòng sau: Mỗi dịng mơ tả một dãy số biết rằng tổng các số trong k dãy
không vượt quá 5*105

Output: Một số là kết quả tìm được hoặc kí tự ‘X’
INPUT

3
545
4 3 8 -1 2
1230
5 3 -7 4 8

OUTPU
T

3

15


Bài 5. Tập số
Cho số tự nhiên N (1 ≤ N ≤ 10 6) và một tập A chỉ gồm các số tự nhiên
khác nhau được xác định như sau:
- 1 thuộc A.
- Nếu k thuộc A thì 2k+1 và 3k+1 cũng thuộc A.
Yêu cầu: Giả sử tập A được sắp xếp tăng dần. Hãy tìm phần tử thứ N của tập A.
Input: Gồm 1 dòng duy nhất chứa số N.
Output: Gồm 1 số duy nhất là phần tử thứ N của tập A tìm được.


INPU
T


OUTPU
T

8

15

Ràng buộc:
- Có 40% số test thỏa mãn điều kiện N ≤ 104
- Có 60% số test thỏa mãn điều kiện 104  Một số bài luyện tập trên website chấm code trực tuyến
Bài 1. />Bài 2. />Bài 3. />Bài 4. />Bài 5. />.....
2.4. Hiệu quả của Sáng kiến kinh nghiệm đối với hoạt động giáo dục, với
bản thân, đồng nghiệp và nhà trường
Trên cơ sở nghiên cứu và hồn thành SKKN, tơi đã tiến hành áp dụng tại trường
THPT Hậu Lộc 2 trong việc bồi dưỡng HSG môn Tin học năm học 2020 - 2021.
Kết quả sau khi áp dụng như sau:
- Đối với GV: qua việc áp dụng sáng kiến, bản thân tôi đã học hỏi được
thêm nhiều kiến thức bổ ích có liên quan đến thuật tốn đánh dấu. Nâng
cao tư duy trong việc thiết kế và lựa chọn thuật toán đối với từng bài toán
cụ thể. Nâng cao khả năng tự học, tự bồi dưỡng kiến thức và xây dựng
chuyên đề thuật toán đánh dấu để đưa vào giảng dạy. Từ đó, tơi có thêm
nhiều kinh nghiệm hơn trong việc xây dựng các chuyên đề dạy học khác,
áp dụng có hiệu quả vào bồi dưỡng HSG mơn Tin học.
- Đối với HS: qua việc học chuyên đề thuật toán đánh dấu HS được rèn
luyện, nâng cao kiến thức về dạng bài có sử dụng thuật tốn đánh dấu.
Biết vận dụng thuật toán đánh dấu vào các bài tập mà GV đã giao, đồng
thời nâng cao khả năng tự học và tăng hứng thú học tập cho HS.
Kết quả cụ thể: việc kết hợp sáng kiến cùng với các chuyên đề học tập khác
trong bồi dưỡng HSG môn Tin học đã giúp nâng cao chất lượng kết quả thi HSG

cấp Tỉnh môn Tin học ở trường THPT Hậu Lộc 2.
Minh chứng qua bảng số liệu sau:
KẾT QUẢ THI HSG CẤP TỈNH MÔN TIN HỌC CỦA TRƯỜNG
16


THPT HẬU LỘC 2
Năm học 2018 - 2019
(trước khi áp dụng sáng kiến)
Khơng
Giải
Giải
Giải
Giải
đạt
Nhất
Nhì
Ba
KK
giải
0
0
0
1
1

Năm học 2020 - 2021
(sau khi áp dụng sáng kiến)
Khơng
Giải Giải Giải Giải

đạt
Nhất Nhì
Ba
KK
giải
0
1
0
1
0

Nhận xét: qua bảng số liệu trên, ta thấy tỉ lệ HS đạt giải của năm 2020 - 2021
khi áp dụng sáng kiến tăng so với năm 2018 - 2019 khi chưa áp dụng sáng kiến
cả về số lượng lẫn chất lượng. Như vậy, việc áp dụng sáng kiến đã có hiệu quả
nhất định trong việc nâng cao chất lượng thi HSG cấp Tỉnh môn Tin học cho HS
của trường.

17


3- KẾT LUẬN, KIẾN NGHỊ
3.1. Kết luận
Với sự cố gắng và nỗ lực của bản thân, tơi đã tích cực sử dụng các
phương tiện dạy học, liên tục cập nhật những nội dung mới về kiến thức chuyên
môn, kỹ thuật sinh test, chấm bài tự động bằng phần mềm Themis, chấm bài tự
động trên các trang web… Tôi đã hướng dẫn đội tuyển HSG môn Tin học của
trường học tập chuyên đề thuật toán đánh dấu trong năm học 2020 - 2021 và
nhận thấy đã đạt được những hiệu quả nhất định. Tôi rất mong nhận được sự
đánh giá và đóng góp ý kiến từ các đồng nghiệp để việc học tập và nghiên cứu
chuyên môn của bản thân đạt kết quả tốt hơn.

3.2. Kiến nghị
Kính mong nhà trường tạo điều kiện mọi mặt, tập trung những HS có
năng lực học tập tốt các môn khoa học tự nhiên vào đội tuyển HSG mơn Tin
học; khuyến khích GV xây dựng các chuyên đề học tập phù hợp với đối tượng
HS để áp dụng vào thực tế bồi dưỡng HSG môn Tin học. Từ đó, góp phần nâng
cao chất lượng thi HSG môn Tin học cấp Tỉnh cho nhà trường ở những năm học
tiếp theo.
SKKN đã được tôi áp dụng tại trường THPT Hậu Lộc 2 và thu được kết
quả nhất định. Tuy nhiên, do thời gian thực nghiệm còn ngắn, phạm vi thực hiện
sáng kiến chưa rộng, chắc chắn không tránh khỏi thiếu sót. Rất mong được các
đồng nghiệp tham khảo và có ý kiến đóng góp bổ sung để sáng kiến phát huy
được tác dụng và có ý nghĩa ứng dụng thiết thực.

18


TÀI LIỆU THAM KHẢO
[1]. Hồ Sĩ Đàm (chủ biên) - Hồ Cẩm Hà - Trần Đỗ Hùng - Nguyễn Đức Nghĩa Nguyễn Thanh Tùng - Ngô Ánh Tuyết, “Sách giáo khoa Tin học 11”, NXB Giáo
dục Việt Nam.
[2]. Hồ Sĩ Đàm - Nguyễn Thanh Tùng, “Sách Bài tập Tin học 11”, NXB Giáo
dục Việt Nam.
[3]. Hồ Sĩ Đàm (chủ biên) - Đỗ Đức Đơng - Lê Minh Hồng - Nguyễn Thanh
Hùng, “Tài liệu giáo khoa chuyên tin - Quyển 1”, NXB Việt Nam.
[4]. Hồ Sĩ Đàm (chủ biên) - Đỗ Đức Đơng - Lê Minh Hồng - Nguyễn Thanh
Hùng, “Tài liệu chuyên tin học Bài tập - Quyển 1”. NXB Việt Nam.
[5]. Lê Minh Hồng, “Giải thuật và lập trình”.
[6]. Tài liệu Tập huấn giáo viên THPT bồi dưỡng HSG tỉnh Thanh Hóa (năm
2015 và năm 2017)
[7]. Websiste: />[8]. Websiste: />
19



XÁC NHẬN CỦA
THỦ TRƯỞNG ĐƠN VỊ

Thanh Hóa, ngày 10 tháng 5 năm 2021
Tơi xin cam đoan đây là SKKN của
mình viết, không sao chép nội dung của
người khác.
(Ký và ghi rõ họ tên)



×