Download as pdf or txt
Download as pdf or txt
You are on page 1of 4

Tên tệp dữ liệu đầu Tên tệp dữ liệu đầu

Tên bài Tên tệp mã Điểm


vào ra
Biểu thức expression.* expression.inp expression.out 5
Ma trận matrix.* matrix.inp matrix.out 3
Những ngôi sao star.* star.inp star.out 2

*: Thay cho đuôi tệp pas, cpp tương ứng lần lượt với ngôn ngữ lập trình Pascal và C++.
Bài 1: Biểu thức
Bạn được Banhmi cho một biểu thức là một xâu S chứa các hệ số và biến, phép toán ‘+’ và
‘-’, với dấu ngoặc thể hiện độ ưu tiên của các biểu thức nhỏ hơn.
Do biểu thức đó chứa khá nhiều biến trùng lặp, nên việc tính toán sẽ rất dài và mệt. Vậy nên,
Banhmi nhờ bạn đơn giản hoá biểu thức đó thành một biểu thức đơn giản để có thể dễ dàng
tính hơn, dưới đây là một số ví dụ:
Biểu thức 5a – (b + a) + (a – b) được đơn giản thành 5a – 2b, hoặc 5a + (-2b),...
Đầu vào: (Tệp expression.inp)
- Một dòng duy nhất chứa xâu S là biểu thức đó (1 ≤ S ≤ 106).
Đầu ra: (Tệp expression.out)
- In ra một xâu T là dạng đơn giản hoá biểu thức đó.
Ví dụ:
expression.inp expression.out
5a – ((b + a) + (a –
3a
b))
Bài 2: Ma trận
Kịt là một đứa bé rất thích tô màu. Anh trai của Kịt, Banhmi, rất muốn đứa em của mình sau
này cũng phải giỏi và tư duy tốt, nên Banhmi đã cho Kịt tô màu theo cách sau:
Banhmi sẽ cho Kịt N * M ô giấy màu trắng, xếp thành hình chữ nhật có N hàng, M cột. Sau
đó Banhmi sẽ hỏi Kịt xem có cách tô màu đen vào các ô giấy, sao cho thoả mãn với hàng i (1
≤ i ≤ N) sẽ có row[i] ô được tô màu đen, và hàng j (1 ≤ j ≤ M) có col[j] ô được tô màu đen.
Nếu Kịt làm được Banhmi sẽ thưởng cho Kịt một bộ bút màu tuyệt đẹp.
Có thể có cách tô màu, hoặc nhiều cách tô, hoặc không có cách tô nào. Nhưng Kịt dù vắt hết
cả óc ra cũng không thể nghĩ ra cách tô màu nào.
Rất thích bộ bút màu đó, nên Kịt van xin bạn hãy giúp Kịt tô màu. Là một lập trình viên với
bộ não cực khủng, bạn hãy giúp em nó.
Đầu vào: (Tệp matrix.inp)
- Dòng đầu ghi hai số nguyên N, M (1 ≤ N, M ≤ 105).
- Dòng thứ hai, ghi N số nguyên row[i] (1 ≤ row[i] ≤ M, 1 ≤ i ≤ N).
- Dòng thứ ba, ghi M số nguyên col[i] (1 ≤ col[i] ≤ N, 1 ≤ i ≤ M).
Đầu ra: (Tệp matrix.out)
- In ra “Yes” nếu có ít nhất một cách tô, ngược lại in ra “No”.
Ví dụ:
matrix.inp matrix.out
3 3
1 1 1 Yes
1 1 1
Bài 3: Những ngôi sao
Bạn đã không giải được bài tô màu trước đó, nên Kịt đã không có cơ hội để nhận được bộ bút
màu. Nhưng không sao, Banhmi đã cho Kịt một cơ hội thứ hai bằng cách giải một bài toán
khác “dễ dàng” và “thân thiện” hơn:
Vào một buổi tối hôm trước, Banhmi quá mệt mỏi sau một ngày làm việc, nên anh đã thư
giãn bằng cách ngắm sao. Những ngôi sao sáng bay lơ lửng như được treo trên bầu trời tối
đen, xanh thẳm... 1, 2, 3,..., N – 1, N ngôi sao, Banhmi đã đếm được trên bầu trời có N ngôi
sao. Đột nhiên, một ngôi sao chổi bay ngang qua, sáng rực để lại một vết ánh sáng dài, chia
cắt bầu trời đó thành hai mảnh, mỗi mảnh trời có N / 2 ngôi sao. Trước hình ảnh ấn tượng,
Banhmi đã quá ngạc nhiên và rất háo hức để vẽ lại hình ảnh đó.
Anh đã vẽ lại hình những ngôi sao trên bầu trời lúc đó, qua mặt phẳng toạ độ. Thứ duy nhất
anh ấy cần là đường thẳng miêu tả vết ánh sáng dài của ngôi sao ngổi bay ngang qua.
Hãy lập trình giải bài toán trên và giúp Kịt nhận được bộ bút màu!
Đầu vào: (Tệp star.inp)
- Dòng đầu ghi một số nguyên N (1 ≤ N ≤ 105) thoả mãn N luôn là số chẵn.
- N dòng sau, dòng thứ i + 1 (1 ≤ i ≤ N) ghi hai số nguyên x[i] và y[i] (-109 ≤ x[i], y[i]
≤ 109) thể hiện toạ độ của ngôi sao thứ i trên mặt phẳng toạ độ.
Đầu ra: (Tệp star.out)
- In ra hai số thực A, B là hai hệ số của đường thẳng miêu tả vết sáng dài y = Ax + B
với 9 chữ số thập phân trên hai dòng (Có nhiều đáp án, hãy in ra 1).
Ví dụ:
star.inp star.out
6
-1 1
-1 -1
0.500000000
1 2
-0.200000000
1 -2
2 0
0 0
Giải thích:

You might also like