Bài tập duyệt đồ thị trong thi quốc giaBài tập duyệt đồ thị trong thi quốc giaBài tập duyệt đồ thị trong thi quốc giaBài tập duyệt đồ thị trong thi quốc giaBài tập duyệt đồ thị trong thi quốc giaBài tập duyệt đồ thị trong thi quốc giaBài tập duyệt đồ thị trong thi quốc giaBài tập duyệt đồ thị trong thi quốc giaBài tập duyệt đồ thị trong thi quốc giaBài tập duyệt đồ thị trong thi quốc giaBài tập duyệt đồ thị trong thi quốc giaBài tập duyệt đồ thị trong thi quốc giaBài tập duyệt đồ thị trong thi quốc giaBài tập duyệt đồ thị trong thi quốc giaBài tập duyệt đồ thị trong thi quốc giaBài tập duyệt đồ thị trong thi quốc giaBài tập duyệt đồ thị trong thi quốc giaBài tập duyệt đồ thị trong thi quốc giaBài tập duyệt đồ thị trong thi quốc gia
Trang 1Bài tập duyệt đồ thị
Bài 1DÃY SỐTên file bài làmDAY.cpp
Xét một dãy số nguyên gồm N phần tử Viết dãy số đó theo thứ tự từ trái sang
phải, sau đó đặt giữa mỗi cặp số cạnh nhau dấu cộng '+' hoặc trừ '-', khi đó ta thu
được một biểu thức số học Ta nói dãy số là chia hết cho K nếu tồn tại một cách đặt dấu để thu được biểu thức số học chia hết cho K
Yêu cầu: Hãy xác định dãy số đã cho có chia hết cho K hay không?
Dữ liệu: File văn bản DAY.INP:
• Dòng đầu là hai số nguyên N và K (2 ≤ N ≤ 104, 2 ≤ K ≤ 100)
• Các dòng tiếp theo là dãy N số nguyên, mỗi số có giá trị tuyệt đối không quá
104
Kết quả: File văn bản DAY.OUT, ghi số 0 hoặc 1 tương ứng với dãy không chia
hết hoặc chia hết cho K
Ví dụ:
4 7
1 2 3 5
1 2 3 5
0
Bài 2 Bước nhảy xa nhất.Tên file bài làmJUMP.cpp
Cho dãy A gồm N số nguyên không âm A1, A2,…, AN Một bước nhảy từ phần tử Ai đến phần tử Aj được gọi là bước nhảy xa nhất của dãy nếu thỏa mãn các điều kiện sau:
+ 1 ≤ i < j ≤ N
Trang 2+ Aj – Ai ≥ P.
+ j – i lớn nhất (Khi đó j – i được gọi là độ dài bước nhảy xa nhất của dãy)
Yêu cầu: Tìm độ dài bước nhảy xa nhất của dãy A.
Dữ liệu vào: Từ tệp JUMP.INP có cấu trúc như sau:
- Dòng 1: Gồm hai số nguyên N và P (1 ≤ N ≤ 105; 0 ≤ P ≤ 109)
- Dòng 2: Gồm N số nguyên A1, A2,…, AN (0 ≤ Ai ≤ 109 với 1 ≤ i ≤ N)
Kết quả: Ghi vào tệp JUMP.OUT gồm một số nguyên dương duy nhất là độ dài
của bước nhảy xa nhất của dãy (Nếu không có bước nhảy nào thỏa mãn thì ghi kết quả bằng 0)
Ví dụ:
3
Chú ý:
- Có 60% test ứng với 60% số điểm với N ≤ 5000.
Bài 3 Tên file bài làm: FIB2.*
Xâu Fibonacci thường được sử dụng để rèn luyện kỹ năng xử lý khi giới thiệu các giải thuật xử lý xâu Xét dãy xâu F0, F1, F2 , xây dựng theo quy tắc sau:
• F0 =’a’
• F1 = ‘b’
• Fn = Fn-2 + Fn-1, n>1
Yêu cầu: Cho hai số nguyên n và k (0 ≤ n≤ 45, k không vượt quá độ dài xâu Fn) Hãy xác định số lượng ký tự a xuất hiện trong k ký tự đầu tiên của xâu Fn
Dữ liệu: Vào từ file FIB2.INP
• Dòng đầu ghi số nguyên T là số test cần xử lý (1 <= T <=100)
• Mỗi dòng trong T dòng sau ghi hai số n và k cách nhau ít nhất một dấu cách
Trang 3Kết quả: Kết quả ghi vào file văn bản FIB2.OUT, ứng với mỗi test trên một dòng dưới dạng một số nguyên
Ví dụ:
4
0 1
1 1
3 2
7 7
1 0 1 3
Bài 4 Chia nhóm
Tham gia Trại hè Tin học năm nay có N học sinh nam và M học sinh nữ Ban tổ chức muốn phân các học sinh này vào các nhóm để các em giao lưu và hỗ trợ nhau tốt hơn trong các hoạt động ngoại khóa Đầu tiên ban tổ chức chọn K học sinh để tham gia tập một tiết mục văn nghệ Sau đó ban tổ chức sẽ chọn ra các nhóm, mỗi nhóm gồm đúng 2 học sinh nam và 1 học sinh nữ
Yêu cầu: Hãy giúp Ban tổ chức xác định số nhóm nhiều nhất có thể phân được
Ví dụ: N=12, M=7 và K=6 Ban tổ chức có thể chọn 4 học sinh nam và 2 học sinh
nữ tham gia tập văn nghệ, còn lại chia làm 4 nhóm (1 học sinh nữ không được phân vào nhóm nào) Cách khác là chọn 3 học sinh nam và 3 học sinh nữ đi tập văn nghệ, còn lại chia làm 4 nhóm (1 học sinh nam không được phân nhóm)
Dữ liệu: Vào từ file văn bản DGROUP.INP gồm 1 dòng chứa 3 số nguyên dương
N, M và K ≤ 109 cách nhau ít nhất một dấu cách
Kết quả: Ghi ra file văn bản DGROUP.OUT một số nguyên duy nhất là số nhóm nhiều nhất chọn được
Ví dụ:
Bài 5 Phần thưởng
Trang 4Tuấn là người thắng cuộc trong một cuộc thi “Tìm hiểu kiến thức vũ trụ” và được nhận phần thưởng do công XYZ tài trợ Các phần thưởng được bố trí trên hai dãy
số a và b Dãy số a có n phần tử nguyên a1, a2, , an, dãy số b có m phần tử b1, b2, , bm, trong đó 1 < n,m < 106, |ai| < 32767 với mọi i=1,2, ,n, |bi| < 32767 , với mọi i=1,2, ,m) Để nhận phần thưởng, Tuấn được phép chọn một số thuộc dãy
a và một số thuộc dãy b sao cho tích hai số mà Tuấn chọn là lớn nhất
Yêu cầu: Hãy xác định tích giá trị lớn nhất của hai món quà mà Tuấn có thể nhận
Dữ liệu: Vào từ file văn bản BONUS.INP
Dòng thứ nhất chứa 2 số nguyên dương n,m
Các dòng tiếp theo chứa n số nguyên a1, a2, , an
Các dòng tiếp theo chứa m số nguyên b1, b2, , bm
Các số trên cùng một dòng được ghi cách nhau ít nhất một dấu cách
Kết quả: Ghi ra file văn bản BONUS.OUT một số nguyên duy nhất là tích giá trị lớn nhất của hai món quà mà Tuấn có thể nhận được
Ví dụ:
BONUS
INP
BONUS
OUT
4 5 -3 1 -8 7
-1 6 -9
10 3
72
Ràng buộc:
Có 40% số test ứng với 40% số điểm của bài có m,n < 103
Có 30% số test khác ứng với 30% số điểm của bài có m,n < 106
Trang 5Bài 6 Tính toán điện năng tiêu thụ
Calcpower.cpp, calcpower.inp, calcpower.out
Dũng quan tâm đến mức tiêu thụ điện năng của chiếc laptop của mình Laptop của cậu có ba chế độ Trong chế độ bình thường máy tiêu thụ P1(watt/phút) T1 phút sau khi Dũng di chuyển chuột hoặc chạm vào bàn phím lần cuối, một màn hình bảo
vệ bắt đầu xuất hiện và tiêu thụ điện năng P2 (watt/phút) Cuối cùng, vào phút thứ T2 từ khi bắt đầu màn hình bảo vệ hoạt động, máy tính chuyển sang chế độ "ngủ"
và tiêu thụ P3 (watt/phút) Nếu Dũng di chuyển chuột hoặc chạm vào bàn phím, máy tính chuyển sang chế độ bình thường Thời gian Dũng làm việc với máy tính
có thể chia thành n giai đoạn [l1, r1], [l2, r2], , [ln, rn] Tại mỗi giai đoạn thời gian này, Dũng liên tục di chuyển chuột hoặc bấm phím Khoảng thời gian giữa các giai đoạn này, Dũng không chạm vào máy tính
Yêu cầu: Tính tổng lượng điện năng tiêu thụ của máy tính trong thời gian [l1, rn]
Dữ liệu:
Dòng đầu chứa lần lượt 6 số nguyên n, P1, P2, P3, T1, T2 (1 ≤ n ≤ 100, 0 ≤ P1, P2, P3 ≤ 100, 1 ≤ T1, T2 ≤ 60)
Dòng thứ i trong n dòng tiếp theo chứa mô tả giai đoạn thời gian làm việc thứ i của Dũng, gồm hai số nguyên li và ri (0 ≤ li<ri ≤ 1440, ri < li+1, ∀ i <n), mô tả thời điểm bắt đầu và kết thúc của giai đoạn làm việc thứ i
Kết quả: In ra tổng lượng điện năng máy tính đã tiêu thụ
Ví dụ:
1 3 2 1 5 10
0 10
20 30
50 100
570
Bài 7 oktalni.cpp, oktalni.inp oktalni.out
Trang 6Minh đang tìm hiểu về hệ đếm khác nhau Anh đang bắt đầu chuyển đổi các số nhị phân sang bát phân Thuật toán Minh sử dụng là:
• Thêm các chữ số nhị phân là số không vào bên trái cho đến khi số lượng các chữ
số chia hết cho ba
• Nhóm các chữ số nhị phân liền kề thành các nhóm ba chữ số
• Thay thế mỗi nhóm các số nhị phân với số bát phân tương ứng (như trong bảng)
Viết một chương trình có thể chuyển đổi một số nhị phân sang bát phân để Minh
có thể xác minh kết quả của mình
Đầu vào
Đầu vào có chứa một số nhị phân Số lượng các chữ số sẽ ít hơn 100, và các chữ số đầu tiên sẽ là 1
Đầu ra
Đầu ra số trong hệ bát phân
Ví dụ
Bài 8 Xóa chữ số
Hãng cung cấp dịch vụ điện thoại XYZ khuyến khích nhiều người đăng kí thuê bao bằng cách: Khi khách hàng đến đăng kí thuê bao thì sẽ được cấp hai số may mắn là số nguyên dương n và k, hãng sẽ khuyến mại người đó một số tiền nhận được từ số n sau khi xóa đúng k chữ số (k nhỏ hơn số chữ số của n)
Trang 7Hải vừa mới đăng kí thuê bao của hãng và được cung cấp hai số n và k, bạn hãy giúp Hải xóa đi k chữ số của số n để số nhận được là lớn nhất
Dữ liệu vào file văn bản Bai1.inp:
- Dòng thứ nhất là số n (số chữ số của n ≤ 105)
- Dòng thứ hai là số k (k<n)
Kết quả ra file văn bản Bai1.out:
- Một dòng duy nhất là số lớn nhất có được sau khi xóa đi k chữ số của n
Ví dụ:
58816 2
886
2357111317192329 6
7317192329
Ràng buộc:
- Có 30% số test ứng với 30% số điểm của bài có n<=100
- Có 30% số test ứng với 30% số điểm của bài có 100<n<=255
- Có 40% số test ứng với 40% số điểm của bài có 255<n<=105
Bài 9 DÃY PHÂN SỐ (ps.cpp)
Cho hai dãy số nguyên dương a1, a2, , aM và b1, b2, , bN Từ hai dãy trên tạo ra
M x N phân số với i = 1,2, , M, j = 1,2, N Sắp xếp các phân số vừa tạo theo thứ tự tăng dần sau khi đã tối giản và loại bớt các phân số bằng nhau (các phân số bằng nhau chỉ giữ lại một lần) thu được dãy phân số P
Trang 8Ví dụ, dãy thứ nhất gồm 2 phần tử 10, 30; còn dãy thứ 2 gồm 3 phần tử 20, 30, 60
ta tạo được các phân số là: thì dãy phân số P là:
Yêu cầu: Cho số nguyên dương K, hãy tìm phân số thứ K trong dãy P
Input: Vào từ file văn bản PS.INP có dạng:
- Dòng đầu tiên ghi 3 số nguyên dương M, N, K (1≤M,N≤30)
- Dòng thứ 2 ghi m số nguyên dương a 1 , a 2 , , a M
- Dòng thứ 3 ghi n số nguyên dương b 1 , b 2 , , b N
( a i , b j ≤10 9 với i=1 M, j=1 N)
Output: Ghi ra file văn bản PS.OUT gồm 2 số nguyên dương là tử số và mẫu số của phân
số tìm được (hai số ghi cách nhau một dấu cách).
Chú ý:Có 60% test N=1 và b1 =1.Dữ liệu bảo đảm k không vượt quá số lượng phần tử của
dãy phân số P
Ps.inp
2 3 4
10 30
20 30 60
Ps.out
1 1
Bài 10 Kim tự tháp số
Phú ông có một cô con gái rất xinh đẹp Khi nàng đã đến tuổi lấy chồng, phú ông muốn kén một chàng rể giỏi nhất làng cho con gái Vì vậy phú ông nghĩ ra trò
“Kim tự tháp số” Kim tự tháp có dạng như hình vẽ:
Mỗi ô của kim tự tháp chứa một số tự nhiên Quy tắc là điền lần lượt các số tự nhiên vào các dòng (điền hết dòng 1 rồi tới dòng 2,
…) Nếu ở dòng lẻ, điền các số từ phải sang trái Nếu ở dòng chẵn, điền các số từ trái sang phải
Trang 9Các chàng trai muốn vượt qua được thử thách và cưới con gái phú ông cần phải trả lời được hai câu hỏi:
1 Cho một số tự nhiên n Hãy cho biết ô chứa số n nằm ở dòng nào trong kim
tự tháp và nằm ở ô thứ mấy (tính từ trái sang phải) của dòng đó
2 Cho hai số tự nhiên r và c Hãy cho biết ô thứ c (tính từ trái sang phải) của dòng thứ r chứa số tự nhiên nào
Dữ liệu: Vào từ file văn bản PYRAMID.INP gồm hai dòng:
- Dòng 1: Số tự nhiên n.
- Dòng 2: Hai số tự nhiên r và c.
Kết quả: Ghi ra file văn bản PYRAMID.OUT gồm hai dòng:
- Dòng 1: Đáp số của câu hỏi thứ 1.
- Dòng 2: Đáp số của câu hỏi thứ 2.
Ví dụ:
PYRAMID.I NP
PYRAMID.O UT
11
3 4
4 2 6 Giới hạn:
-Bài 11 XẾP ĐÁ
Cuội rất thích chơi một trò chơi với bộ sưu tập gồm viên đá của mình: Xếp viên
đá lên một bảng hình chữ nhật chia thành lưới ô vuông đơn vị, sao cho mỗi ô có không quá một viên đá
Trang 10a) b) c)
Ví dụ với , Cuội có thể xếp chúng vào bảng kích thước (Hình a), (Hình b) hay (Hình c)…
Yêu cầu: Xác định kích thước của bảng có chu vi nhỏ nhất mà Cuội có thể thực
hiện được trò chơi
Dữ liệu: Vào từ file văn bản STONES.INP gồm một dòng chứa số tự nhiên
Kết quả: Ghi ra file văn bản STONES.OUT hai số cách nhau một dấu cách là độ
dài hai cạnh của bảng tìm được
Ví dụ:
STONES.OUT
3 2