1 Đề thi này có 02 trang TỔNG QUAN NGÀY THI THỨ NHẤT Câu Tên câu File chương trình File dữ liệu vào File kết quả 1 Chuỗi đối xứng C1-ChuoiDX.* ChuoiDX.inp ChuoiDX.out 2 Tam giác số C
Trang 11
Đề thi này có 02 trang
TỔNG QUAN NGÀY THI THỨ NHẤT
Câu Tên câu File chương trình File dữ liệu vào File kết quả
1 Chuỗi đối xứng C1-ChuoiDX.* ChuoiDX.inp ChuoiDX.out
2 Tam giác số C2-TGSo.* TGSo.inp TGSo.out
3 Đường đi C3-DuongDi.* DuongDi.inp DuongDi.out Dấu * được thay thế bởi PAS hoặc CPP của ngôn ngữ lập trình được sử dụng tương ứng là Pascal hoặc C++ Yêu cầu đặt tên file giống bảng trên
Hãy lập trình giải các câu hỏi sau:
Câu 1: (6,0 điểm) Chuỗi đối xứng
Một chuỗi được gọi là đối xứng nếu nó có hai ký tự trở lên và đọc từ trái sang phải hay
từ phải sang trái đều giống nhau Cho một chuỗi S gồm N ký tự (2 ≤ N ≤ 20000)
Nhiệm vụ của bạn là hãy tìm một chuỗi con đối xứng có độ dài lớn nhất trong chuỗi S
Dữ liệu vào trong tập tin văn bản ChuoiDX.inp:
- Dòng thứ nhất chứa số nguyên N
- Dòng tiếp theo là chuỗi ký tự S gồm những chữ cái in hoa (A, B, …, Z)
Kết quả xuất ra tập tin văn bản ChuoiDX.out:
- Dòng thứ nhất là độ dài của chuỗi con đối xứng dài nhất
- Dòng thứ hai là chuỗi con đối xứng dài nhất tìm được
21
MIKBACOBEGIGEBOCABHTM
15 BACOBEGIGEBOCAB
Câu 2: (7,0 điểm) Tam giác số
Cho một tam giác số là một tam giác cân có N dòng (N ≤ 100), mỗi số trong tam giác có giá trị từ 0 đến 99
Nhiệm vụ của bạn là hãy tìm đường đi từ đỉnh đến đáy sao cho tổng các số trên đường
đi là lớn nhất, mỗi bước đi chỉ có thể đi xuống về phía trái hoặc đi xuống về phía phải của số đang chọn
Dữ liệu vào trong tập tin văn bản TGSo.inp:
- Dòng thứ nhất là một số nguyên N
- N dòng tiếp theo là các số trong tam giác số, mỗi số cách nhau một khoảng trắng
Trang 22
Kết quả xuất ra tập tin văn bản TGSo.out:
- Dòng đầu là dãy các số của đường đi tìm được, mỗi số cách nhau một khảng trắng
- Dòng thứ hai là tổng của các số nguyên tố trên đường đi tìm được
Ví dụ: Minh họa tam giác số cân TGSo.inp TGSo.out
Câu 3: (7,0 điểm) Đường đi
Tại một quốc gia có N thành phố, biết rằng đường đi giữa 2 thành phố bất kỳ (nếu có) đều là đường đi hai chiều Sơ đồ mạng lưới giao thông của N thành phố được biểu diễn bởi bảng A gồm N dòng và N cột (N x N), trong đó: A[i,j] là độ dài đường đi từ thành phố i đến thành phố j, nếu không có đường đi từ thành phố i đến thành phố j thì A[i,j] = 0, A[i,j] = A[j,i], A[i,i] = 0 và A[i,j] là số nguyên, không âm
Nhiệm vụ của bạn là hãy tìm đường đi ngắn nhất giữa hai thành phố p và q nào đó Nếu
không tồn tại đường đi thì thông báo “Khong có duong di tu p den q”, nếu tồn tại hơn một
đường đi ngắn nhất thì chọn đường đi qua ít thành phố trung gian nhất
Dữ liệu vào trong tập tin văn bản DuongDi.inp:
- Dòng thứ nhất là số nguyên dương N
- N dòng tiếp theo, mỗi dòng gồm N số nguyên
- Dòng cuối cùng gồm 2 số nguyên p và q
Kết quả xuất ra tập tin văn bản DuongDi.out: đường đi ngắn nhất và lộ trình của đường
đi ngắn nhất đó hoặc thông báo “Khong có duong di tu p den q”
Trang 31
Đề thi này có 02 trang
TỔNG QUAN NGÀY THI THỨ HAI Câu Tên câu File chương trình File dữ liệu vào File kết quả
1 Du lịch C1-DuLich.* DuLich.inp DuLich.out
2 Tiếp thị C2-TiepThi.* TiepThi.inp TiepThi.out
3 Vườn rau C3-VuonRau.* VuonRau.inp VuonRau.out
Dấu * được thay thế bởi PAS hoặc CPP của ngôn ngữ lập trình được sử dụng tương ứng là Pascal hoặc C++ Yêu cầu đặt tên file giống bảng trên
Hãy lập trình giải các câu hỏi sau:
Câu 1: (6,0 điểm) Du lịch
Trong khu du lịch Minh Khang có M điểm tham quan được đánh số từ 1 đến M Có M-1 con đường nối giữa các điểm tham quan với nhau và luôn có đường đi giữa các điểm tham quan bằng các con đường đó, độ dài mỗi điểm tham quan là 1 đơn vị thời gian Xuất phát từ cổng khu du lịch là điểm tham quan thứ nhất, khách du lịch phải đi tất cả các con đường để đến tất cả các điểm tham quan, sau
đó quay lại cổng để ra về vì vậy mất rất nhiều thời gian để đến được tất cả các điểm tham quan Để tiết kiệm thời gian tham quan, khu du lịch quyết định mở thêm một con đường tắt kết nối giữa 2 điểm tham quan nào đó với nhau
Nhiệm vụ của bạn là hãy giúp khu du lịch Minh Khang mở thêm một con đường tắt và số cách
mở con đường tắt đó sao cho tổng đơn vị thời gian là ít nhất để khách du lịch đến tất cả được các điểm tham quan
Dữ liệu vào trong tập tin văn bản DuLich.inp:
- Dòng thứ nhất chứa số nguyên M (2 ≤ M ≤ 105)
- M-1 dòng tiếp theo, mỗi dòng chứa 2 số nguyên D và L (1 ≤ D, L ≤ M) là con đường nối điểm tham quan D và điểm tham quan L
Kết quả xuất ra tập tin văn bản DuLich.out:
- Dòng thứ nhất là tổng chi phí thời gian ít nhất
- Dòng thứ hai là số cách mở thêm một đường tắt
- Các dòng tiếp theo là liệt kê các cách nối giữa 2 điểm tham quan của một đường tắt
Câu 2: (7,0 điểm) Tiếp thị
Nhân dịp Tết trung thu sắp đến, cơ sở sản xuất bánh trung thu Nguyệt Giang thực hiện chiến dịch quảng bá sản phẩm đến người tiêu dùng bằng cách tăng cường số nhân viên tiếp thị đến các đại lý trong thành phố Trong thành phố có M con đường và N đại lý, mỗi con đường chỉ nối trực tiếp giữa
Trang 42
hai đại lý và được ký hiệu bằng chỉ số của 2 đại lý mà nó nối Đồng thời, giữa hai đại lý bất kỳ có không quá một con đường nối chúng Các đại lý trên hành trình theo các yêu cầu là có đường nối trực tiếp giữa hai đại lý liên tiếp nhau và từ một đại lý bất kỳ có thể đi qua tất cả các đoạn đường trong hành trình đó rồi trở về nơi xuất phát mà không đi qua đoạn đường nào quá một lần Mỗi nhân viên chỉ
di chuyển trên hành trình mà được phân công
Nhiệm vụ của bạn là hãy tính số lượng nhân viên tối đa mà cơ sở sản xuất bánh trung thu Nguyệt Giang có thể xếp việc
Dữ liệu vào trong tập tin văn bản TiepThi.inp:
- Dòng thứ nhất là 2 số nguyên N và M (N ≤ 2000, M ≤ 5000)
- Trong M dòng tiếp theo, mỗi dòng ghi 2 số nguyên mô tả một đoạn đường, mỗi đoạn đường được mô tả bởi chỉ số của hai đại lý mà nó nối
Kết quả xuất ra tập tin văn bản TiepThi.out: có một số duy nhất là số lượng nhân viên tiếp thị
tối đa tìm được
Câu 3: (7,0 điểm) Vườn rau
Nam được giao nhiệm vụ thu hoạch S kg rau trong khu vườn của gia đình Vườn rau được chia thành M x N ô vuông và số lượng rau tại mỗi ô đã biết Các hàng được đánh số từ 1 đến M từ trên xuống dưới, các cột được đánh số từ 1 đến N từ trái sang phải Để tiện cho việc quản lí, Nam phải chọn
ra một khu đất có hình chữ nhật trong vườn rau để thu hoạch
Nhiệm vụ của bạn hãy giúp Nam tìm ra khu đất có diện tích nhỏ nhất mà Nam thu hoạch có số lượng rau bằng S kg
Dữ liệu vào trong tập tin văn bản VuonRau.inp:
- Dòng thứ nhất chứa số M, N, S (1 ≤ M, N ≤ 500, 1 ≤ S ≤ 109)
- Dòng thứ i trong M dòng tiếp theo chứa N số nguyên không âm, trong đó số thứ j cho biết lượng rau tại ô (i, j) Biết lượng rau tại mỗi ô không vượt quá 104 kg
Kết quả xuất ra tập tin văn bản VuonRau.out: Nếu không tồn tại vùng nào cho đủ lượng rau
cần thu hoạch, in ra 0 Ngược lại in ra:
- Dòng thứ nhất ghi diện tích nhỏ nhất của vùng rau thu hoạch
- Dòng tiếp theo ghi bốn số là chỉ số của góc trên trái và góc dưới phải của vùng rau thu hoạch Nếu có nhiều vùng cùng thỏa mãn thì in ra tọa độ của một vùng bất kỳ
Họ tên thí sinh: Số báo danh:
Chữ ký của Giám thị 1: Chữ ký của Giám thị 2:
Trang 5SỞ GIÁO DỤC VÀ ĐÀO TẠO THI CHỌN ĐỘI TUYỂN HỌC SINH GIỎI QUỐC GIA
Đề thi này có 02 trang, gồm 03 câu
TỔNG QUAN NGÀY THI THỨ NHẤT Câu Tên câu File chương trình File dữ liệu vào File kết quả
1 Ghép số nguyên dương C1GhepSo.* GhepSo.inp GhepSo.out
2 Trò chơi kéo co C2KeoCo.* KeoCo.inp KeoCo.out
3 Tách chuỗi đối xứng C3TachCDX.* TachCDX.inp TachCDX.out Dấu * được thay thế bởi PAS hoặc CPP của ngôn ngữ lập trình được sử dụng tương ứng là Pascal hoặc C++ Yêu cầu đặt tên file giống bảng trên
Hãy lập trình giải các câu hỏi sau:
Câu 1: (6,0 điểm) Ghép số nguyên dương
Trong giờ ra chơi Bi đố Bo như sau: Có hai số nguyên dương A và B, cần tạo ra số C bằng cách ghép các chữ số của A và B sao cho thứ tự các chữ số của A và B không thay đổi trên số C Bạn hãy giúp Bo xây dựng số C sau đó tìm giá trị nhỏ nhất và lớn nhất của số C
Dữ liệu: vào từ tập tin văn bản GhepSo.inp: gồm một dòng duy nhất có 2 số nguyên
dương A và B, với 1 ≤ A, B ≤ 108, dữ liệu đảm bảo không có các chữ số 0 vô nghĩa của A và B
Kết quả: ghi ra tập tin văn bản GhepSo.out: gồm
- Dòng thứ nhất ghi giá trị của số A và số B
- Dòng thứ hai ghi giá trị nhỏ nhất của số C
- Dòng thứ ba ghi giá trị lớn nhất của số C
Gia tri nho nhat cua so C: 2418 Gia tri lon nhat cua so C: 4281
Câu 2: (7,0 điểm) Trò chơi kéo co
Trong buổi sinh hoạt ngoài trời, thầy chủ nhiệm chia học sinh thành hai đội để chơi kéo co Bạn hãy giúp thầy tìm cách chia hai đội sao cho công bằng nhất theo cả hai điều kiện là tổng khối lượng các thành viên trong hai đội có sự chênh lệch là ít nhất và số thành viên của hai đội chênh lệch nhau không quá 1 người
Dữ liệu: vào từ tập tin văn bản KeoCo.inp: gồm
- Dòng đầu là một số nguyên dương N (2 ≤ N ≤ 100) là số học sinh trong lớp
- N dòng tiếp theo cho biết khối lượng của từng học sinh, khối lượng có giá trị trong khoảng [20 150]
Trang 6Kết quả: ghi ra tập tin văn bản KeoCo.out: hai dòng được sắp xếp không giảm theo
tổng khối lượng mỗi đội, mỗi dòng thể hiện tổng số thành viên và khối lượng của mỗi đội Nếu có nhiều cách chia thì in ra 1 cách chia bất kì
Câu 3: (7,0 điểm) Tách chuỗi đối xứng
Chuỗi đối xứng (palindrome) là chuỗi mà nếu ta đọc từ trái sang phải hay từ phải sang trái thì đều giống nhau Ví dụ chuỗi 'xyzyx' là chuỗi đối xứng Một ký tự duy nhất cũng được gọi là chuỗi đối xứng
Một chuỗi S bất kỳ luôn có thể tách được từ các chuỗi đối xứng Ví dụ chuỗi
‘madambobseesanna’ có một số cách tách như sau:
1) ‘m’ + ‘a’ + ‘d’ + ‘a’ + ‘m’+ ‘b’ + ‘o’ + ‘b’ + ‘s’ + ‘e’ + ‘e’ + ‘s’ + ‘a’ + ‘n’ + ‘n’ + ‘a’ 2) ‘madam’ + ‘bob’ + ‘sees’ + ‘anna’
3) ‘madam’ + ‘bob’ + ‘s’ + ‘ee’ + ‘s’ + ‘anna’
4) ‘m’ + ‘ada’ + ‘m’ + ‘b’ + ‘o’ + ‘b’ + ‘sees’ + ‘anna’
Tổng quát S = P1 + P2 + + Pk, với P1, P2, , Pk là các chuỗi đối xứng Bạn hãy tìm cách biểu diễn S sao cho k là bé nhất Trong ví dụ trên k = 4 (cách tách số 2)
Dữ liệu: vào từ tập tin văn bản TachCDX.inp:
- Dòng thứ nhất là số nguyên N (1 ≤ N ≤ 2000) biểu thị chiều dài chuỗi S
- Dòng thứ hai là chuỗi S gồm N ký tự là các chữ cái la tinh thường từ ‘a’ đến ‘z’
Kết quả: ghi ra tập tin văn bản TachCDX.out:
4 madam bob sees anna
- HẾT -
Họ tên thí sinh: Số báo danh:
Chữ ký của Giám thị 1: Chữ ký của Giám thị 2:
Trang 7Ngày thi thứ hai: 16/9/2017
Đề thi này có 02 trang, gồm 03 câu
TỔNG QUAN NGÀY THI THỨ HAI Câu Tên câu File chương trình File dữ liệu vào File kết quả
1 Mật khẩu an toàn C1MatKhau.* MatKhau.inp MatKhau.out
2 Phân tích số nguyên tố C2PhanTich.* PhanTich.inp PhanTich.out
3 Hệ thống dây điện C3DayDien.* DayDien.inp DayDien.out Dấu * được thay thế bởi PAS hoặc CPP của ngôn ngữ lập trình được sử dụng tương ứng là Pascal hoặc C++ Yêu cầu đặt tên file giống bảng trên
Hãy lập trình giải các câu hỏi sau:
Câu 1: (6,0 điểm) Mật khẩu an toàn
Một xâu ký tự được gọi là mật khẩu an toàn nếu xâu có độ dài ít nhất bằng 8 và xâu chứa ít nhất một chữ cái in hoa (‘A’ ’Z’), một chữ cái thường (‘a’ ’z’), một chữ số (‘0’ ’9’)
Ví dụ: ‘a1B2C3’, ‘tinHoc6’ là hai mật khẩu an toàn, còn ‘a1B2C’, ‘a1b2c3’, ‘tinHoc’ đều không phải là mật khẩu an toàn
Một lần, Thanh nhìn thấy một sâu S, chỉ gồm các loại kí tự: Chữ cái in hoa, chữ cái thường và chữ số Thanh muốn tự kiểm tra khả năng đoán nhận mật khẩu bằng cách đếm xem có bao nhiêu cặp chỉ số (i, j) thỏa mãn điều kiện: 1 ≤ i < j ≤ length(S) và xâu con gồm các ký tự liên tiếp từ i đến j của S là mật khẩu an toàn
Yêu cầu: Cho xâu S, tính số lượng cặp chỉ số (i, j) thỏa mãn điều kiện nêu trên
Dữ liệu: vào từ tập tin văn bản MatKhau.inp: gồm một dòng chứa xâu S có độ dài
Trang 82
Câu 2: (7,0 điểm) Phân tích số nguyên tố
Nhập một số nguyên N (4 < N < 20000) Chọn nhiều nhất M số nguyên tố khác nhau sao cho tổng của M số nguyên tố này nhỏ hơn hoặc bằng N Hãy cho biết có bao nhiêu cách chọn như trên?
Ví dụ: Với N = 15, ta có nhiều nhất 3 số nguyên tố có tổng nhỏ hơn hoặc bằng 15 và
Dữ liệu: vào từ tập tin văn bản PhanTich.inp: số nguyên N
Kết quả: ghi ra tập tin văn bản PhanTich.out: số cách chọn
Ví dụ: PhanTich.inp PhanTich.out
Câu 3: (7,0 điểm) Hệ thống dây điện
Một công ty cần thay toàn bộ hệ thống dây điện cho N phòng làm việc Cho biết sơ
đồ mạng lưới điện hiện có của N căn phòng này được biểu diễn bằng ma trận A[i, j] trong
đó A[i, j] chính là độ dài của dây điện nối liền giữa hai phòng i, j (A[i, j] = A[j, i], A[i, j] = 0 nếu không có dây nối giữa phòng i và phòng j) Hãy lập trình tính độ dài của dây dẫn cần sử dụng sao cho cả N phòng đều có điện và số lượng này là ít nhất
Dữ liệu: vào từ tập tin văn bản DayDien.inp: gồm N + 1 dòng
- Dòng đầu ghi số N
- Dòng i + 1 (1 ≤ i ≤ N) ghi N số A[i, 1] A[i, 2]…A[i, N]
Các số ghi trên cùng một dòng cách nhau ít nhất một dấu cách
Kết quả: ghi ra tập tin văn bản DayDien.out: độ dài dây điện ít nhất
Ví dụ: DayDien.inp DayDien.out DayDien.inp DayDien.out
- HẾT -
Họ tên thí sinh: Số báo danh:
Chữ ký của Giám thị 1: Chữ ký của Giám thị 2:
Trang 9Đề thi này có 02 trang
TỔNG QUAN BÀI THI Câu Tên câu File chương trình File dữ liệu vào File kết quả
1 Tiền mỗi loại C1TienML.* TienML.inp TienML.out
2 Ngày sinh nhật C2NgaySN.* NgaySN.inp NgaySN.out
3 Vận động C3VanDong.* VanDong.inp VanDong.out
Dấu * được thay thế bởi PAS hoặc CPP của ngôn ngữ lập trình được sử dụng tương ứng là Pascal hoặc C++ Yêu cầu đặt tên file giống bảng trên
Hãy lập trình giải các câu hỏi sau:
Câu 1: (6,0 điểm) Tiền mỗi loại
Một ngân hàng có N loại tiền mệnh giá A[1], A[2], A[3],…,A[N] với số lượng tiền mỗi loại không giới hạn Cần chi trả cho khách hàng một số tiền là M đồng Hãy cho biết cần bao nhiêu tiền mỗi loại để trả sao cho số lượng tờ là ít nhất
Dữ liệu vào từ tập tin văn bản TienML.inp gồm:
- Dòng 1: Ghi 2 số N và M
- Dòng 2: Ghi N số nguyên dương A[1] A[2] … A[N], dữ liệu cho là các số nguyên dương
Kết quả ghi ra tập tin văn bản TienML.out gồm:
- Dòng 1: Ghi số lượng tờ phải trả
- Dòng 2: Ghi N số nguyên không âm ứng với số tờ cần trả cho mỗi loại tiền Các số ghi trên cùng một dòng ghi cách nhau ít nhất một dấu cách
Câu 2: (7,0 điểm) Ngày sinh nhật
Trong ngày sinh nhật, hai anh em Tùng và Bách nhận được N đồ chơi Trên
đồ chơi i có ghi giá tiền Xi Hai anh em quyết định mỗi người phải có trách nhiệm bảo quản một phần số quà và phân chia sao cho chênh lệch tổng giá trị tiền đồ chơi
mà mỗi người bảo quản là ít nhất Hãy giúp Tùng và Bách phân chia trách nhiệm
Trang 102
Dữ liệu vào từ tập tin văn bản NgaySN.inp gồm:
- Dòng 1: Số nguyên dương N
- Dòng 2: N số nguyên dương X1, X2,…Xn
Kết quả ghi ra tập tin văn bản NgaySN.out gồm:
Mỗi dòng ghi các số tương ứng với các đồ chơi của một người và cuối mỗi dòng là tổng giá trị các đồ chơi tương ứng
đề nghị tất cả các học sinh trong cùng một phòng tự bàn bạc thảo luận với nhau để thực hiện nhiệm vụ là di chuyển về các phòng sao cho mỗi phòng chỉ có các học sinh cùng một lớp và năng lượng chi phí cho việc di chuyển là ít nhất
Dữ liệu vào từ tập tin văn bản VanDong.inp gồm:
- Dòng 1: hai số nguyên dương biểu thị khoảng cách giữa phòng P1 với phòng P2 và phòng P1 với phòng P3;
- Dòng 2: ba số nguyên dương c10, c11, c12 cho biết chi phí năng lượng tương ứng của mỗi học sinh L10, L11, L12 để di chuyển một đơn vị khoảng cách;
- Dòng 3: ba số nguyên không âm cho biết số lượng học sinh của mỗi lớp L10, L11, L12 trong phòng P1;
- Dòng 4: ba số nguyên không âm cho biết số lượng học sinh của mỗi lớp L10, L11, L12 trong phòng P2;
- Dòng 5: ba số nguyên không âm cho biết số lượng học sinh của mỗi lớp L10, L11, L12 trong phòng P3
Kết quả ghi ra tập tin văn bản VanDong.out gồm:
- Dòng 1: một hoán vị của ba mã L10, L11, L12 cho biết phương án tối ưu
bố trí các học sinh vào các phòng;
- Dòng 2: tổng chi phí năng lượng tối thiểu cho các học sinh di chuyển
Dữ liệu trên cùng dòng cách nhau qua dấu cách
Trang 11Đề thi này có 02 trang
TỔNG QUAN NGÀY THI THỨ NHẤT Câu Tên câu File chương trình File dữ liệu vào File kết quả
1 Tổng ma trận TongMT.* TongMT.inp TongMT.out
2 Xâu kí tự XauKiTu.* XauKiTu.inp XauKiTu.out
3 Băng nhạc BangNhac.* BangNhac.inp BangNhac.out Dấu * được thay thế bởi PAS hoặc CPP của ngôn ngữ lập trình được sử dụng tương ứng là Pascal hoặc C++ Yêu cầu đặt tên file giống bảng trên
Hãy lập trình giải các câu hỏi sau:
Câu 1: (6,0 điểm) Tổng ma trận
Một ma trận A cấp m x n các số nguyên (mỗi số hạng trên cùng một hàng được cách nhau bằng dấu cách) Tính tổng các số hạng trên mỗi hàng của ma trận?
Dữ liệu vào trong tập tin văn bản TongMT.inp
- Dòng đầu tiên chứa hai số m và n tương ứng với số hàng và số cột của ma trận
- m hàng tiếp theo là số hạng các hàng của ma trận
Kết quả xuất ra tập tin văn bản TongMT.out
Gồm m hàng, số cuối cùng của mỗi hàng là giá trị tổng các số hạng của hàng đó