Skip to content
Narrow screen resolution Wide screen resolution Auto adjust screen size Increase font size Decrease font size Default font size default color grey color
         
 | 
VNOI - Olympic tin học Việt Nam

Điểm tin VOJ

Số thành viên:6429
Số bài tập:1004
Số bài nộp:847686
Bài nộp hôm nay:0
Thành viên xuất sắc trong ngày (19-05-2013):gawry (0.0)
Thành viên xuất sắc trong tháng (04-2013):writer (+37.3)

Top 10 thành viên xuất sắc

HạngThành viênĐiểm
1mr_invincible597.5
2con_nha_ngheo506.8
3hieult506.3
4vodanh9x478.9
5hiepsieunhan452.9
6white_cobra404.9
7yenthanh132394.1
8flash_mt384.1
9phaleq366.8
10conankudo327.1
Các điểm nối In E-mail
(6 votes)
Người viết: Ngô Minh Đức   
21/04/2008

Các điểm nối

“Các điểm nối” là một trò chơi rất nổi tiếng chỉ có một người chơi. Để bắt đầu chơi bạn hãy chọn ngẫu nhiên 2 số tự nhiên lớn hơn 1, ví dụ g và r. Bạn hãy vẽ trên giấy 4 điểm là đỉnh của một hình vuông, 2 đỉnh phía trên màu xanh và 2 đỉnh phía dưới màu đỏ. Sau đó bạn bắt đầu vẽ các điểm màu xanh hoặc đỏ bên trong hình vuông. Chú ý rằng không bao giờ được để cho 3 điểm bất kỳ (kể cả 4 điểm ban đầu) nằm trên một đường thẳng. Tiếp tục việc tạo các điểm như vậy cho đến khi số điểm màu xanh bằng g và số điểm màu đỏ bằng r.

Sau khi đã tạo xong các điểm thì bạn bắt đầu nối các cặp điểm bằng các đoạn thẳng. Bấy kỳ 2 điểm nào cũng có thể nối được đoạn thẳng với điều kiện:

·         Hai điểm được nối phải cùng màu, và

·         Đoạn thẳng nối hai điểm này không được giao với bất cứ đoạn thẳng nào đã được nối trước đó (trừ ra các điểm được nối).

Hai điểm u và v được gọi là cùng nằm trên một miền nếu tìm được một đường đi theo các đoạn thằng từ u đến v.

Bạn sẽ thắng nếu như bạn nối được tất cả g điểm màu xanh bởi g-1 đoạn thẳng và nối được tất cả r điểm màu đỏ bởi r-1 đoạn thẳng. Có thể chứng minh được rằng luôn tồn tại một cách chơi để bạn chiến thắng.

Cho trước s là kích thước của hình vuông với g điểm xanh và r điểm màu đỏ với các tọa độ nguyên cho bởi cặp số nguyên (xi, yi).

Các điểm màu xanh đánh số từ 1 đến g với điểm đỉnh trái (0,s) đánh số 1, điểm đỉnh phải (s,s) đánh số 2, các điểm bên trong hình vuông đánh số từ 3 đến g.

Các điểm đỏ đánh số từ 1 đến r với đỉnh dưới trái là (0,0) đánh số 1, đỉnh phải (s,0) đánh số 2, các điểm bên trong đánh số từ 3 đến r.

Hình dưới đây mô tả một cuộc chơi trong đó các điểm đã được nối xong, các điểm xanh nằm trong một miền, các điểm đỏ nằm trong một miền. Không có 3 điểm nào thẳng hàng và không có hai đoạn thẳng nào cắt nhau ngoại trừ các điểm đầu mút.

 

  Yêu cầu

Viết chương trình, cho trước tọa độ của g điểm xanh và r điểm đỏ, hãy xác định cách vẽ g-1 đoạn thẳng nối các điểm xanh và r-1 đoạn nối các điểm màu đỏ sao cho các điểm xanh nằm trong một miền và các điểm đỏ nằm trong một miền và không có hai đoạn nào cắt nhau.

Ràng buộc

3 ≤ g ≤ 50 000              Số lượng các điểm xanh

3 ≤ r  ≤ 50 000             Số lượng các điểm màu đỏ

0 < s ≤ 200 000 000

INPUT

Chương trình cần đọc dữ liệu từ tệp văn bản points.in có dạng sau:

points.in

Mô tả

6

0 1000

1000 1000

203 601

449 212

620 837

708 537

8

0 0

1000 0

185 300

314 888

416 458

614 622

683 95

838 400

Dòng 1: Chứa số tự nhiên g

g dòng tiếp theo: Mỗi dòng chứa hai số tự nhiên cách nhau bởi dấu cách là tọa độ  x  y của g điểm màu xanh bắt đầu từ 1 đến g.

Dòng g+2: Chứa số tự nhiên r.

r dòng tiếp theo:  Mỗi dòng chứa hai số tự nhiên cách nhau bởi dấu cách là tọa độ  x  y của r điểm màu đỏ bắt đầu từ 1 đến r.

OUTPUT

Chương trình cần đưa ra tệp kết quả points.out có dạng sau:

points.out

Mô tả

1 3 g

3 1 r

3 5 r

4 6 r

6 5 r

4 6 g

1 2 g

1 2 r

5 2 g

2 6 g

7 8 r

8 2 r

Tệp kết quả cần chứa (g – 1) + (r – 1) dòng, mỗi dòng mô tả một đoạn thẳng cần nối.

Mỗi dòng sẽ bao gồm 2 số tự nhiên cách nhau bởi dấu cách và một ký tự. Hai số tự nhiên chính là hai điểm cần nối bởi một đoạn thẳng. Ký tự sẽ chỉ ra màu của đoạn này. Ký tự là g nếu đoạn màu xanh và là r nếu đoạn là màu đỏ.

Thứ tự của các đoạn thẳng được nối không quan trọng; thứ tự của các điểm được nối của đoạn thẳng cũng không quan trọng.

 

 

Cách chấm điểm

Với các Test có tổng điểm 35, mỗi Test sẽ có dữ liệu đầu vào thỏa mãn điều kiện:

3 ≤ g ≤ 20

3 ≤ r ≤ 20
 
< Trước   Tiếp >