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:6471
Số bài tập:1004
Số bài nộp:851004
Bài nộp hôm nay:0
Thành viên xuất sắc trong ngày (23-05-2013):hk10 (+3.4)
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_invincible584.8
2con_nha_ngheo506.4
3hieult503.5
4vodanh9x470.6
5hiepsieunhan445.0
6white_cobra401.1
7yenthanh132390.6
8flash_mt380.1
9phaleq366.3
10conankudo324.1
Khối siêu cúp In E-mail
(0 votes)
Người viết: Ngô Minh Đức   
09/04/2008

OLYMPIC TIN HỌC SINH VIÊN

LẦN THỨ XIII - 2004 

Khối thi: Cá nhân Chuyên 

Thời gian làm bài: 180 phút

Ngày thi: 8-5-2004

Nơi thi: Đại học Hàng Hải Hải Phòng

Tên bài

Tên file
chương trình

Tên file
dữ liệu

Tên file
kết quả

Thời gian cho mỗi test

Tổng điểm cho bài

Mái nhà

ROOF.???

ROOF.INP

ROOF.OUT

1 giây

50

Dãy nhị phân

BINSEQ.???

BINSEQ.INP

BINSEQ.OUT

1 giây

50

Dấu ??? được thay thế bởi đuôi ngầm định của ngôn ngữ được sử dụng để cài đặt chương trình.

Bài 1: HÌNH VUÔNG LA TINH

Tên chương trình: LATIN.???

Hình vuông la tinh cấp N là bảng vuông gồm NxN số được xếp thành N dòng và N cột sao cho mỗi dòng và mỗi cột đều là một hoán vị của các số tự nhiên 1, 2, …, N. Cho XYZ là một hình vuông la tinh cấp N. Một hình vuông la tinh cấp M ( 1 < M < N) nằm trên giao của M dòng liên tiếp và M cột liên tiếp nào đó của XYZ được gọi là hình vuông la tinh con của XYZ.

 

Yêu cầu: Cho XYZ là một hình vuông la tinh cấp N, hãy tính số lượng hình vuông la tinh con của nó.

 

Dữ liệu: vào từ file văn bản LATIN.INP:

  • Dòng đầu chứa số nguyên N
  • N dòng sau: mỗi dòng chứa N số nguyên trên dòng tương ứng của hình vuông la tinh.

 

Kết quả: ghi ra file văn bản LATIN.OUT:

  • Dòng đầu tiên chứa số nguyên K - số hình vuông la tinh con tìm được.
  • K dòng sau: mỗi dòng chứa 3 số nguyên I J M, trong đó I, J - tọa độ dòng, cột của phần tử ở góc trên trái của hình vuông la tinh con kích thước M. (Các dòng và cột của hình vuông la tinh đã cho được đánh số từ 1 đến N từ trên xuống dưới và từ trái qua phải)

 

Ví dụ:

LATIN.INP

8

5 6 7 8 1 2 3 4

6 7 8 5 2 1 4 3

7 8 5 6 3 4 2 1

8 5 6 7 4 3 1 2

1 4 2 3 5 6 7 8

2 1 3 4 6 7 8 5

3 2 4 1 7 8 5 6

4 3 1 2 8 5 6 7

LATIN.OUT

4

1 5 2

1 5 4

3 7 2

5 1 4

 


 

Bài 2: PHÁ HỦY ĐỒ THỊ

Tên chương trình: DESTROY.???

 

Cuội rủ Bờm tham gia vào trò chơi sau đây. Thoạt tiên Cuội vẽ một đồ thị có hướng với N đỉnh và M cung. Sau đó Bờm phải phá hủy đồ thị này. Tại mỗi nước đi, Bờm chọn một đỉnh bất kỳ và có thể xóa các cung đi vào nó hoặc xóa các cung đi ra khỏi nó. Cuội đặt hai loại giá trị cho mỗi đỉnh i của đồ thị: Wi+Wi-. Nếu xóa các cung đi vào đỉnh I thì Bờm phải trả Wi+ (đồng), còn nếu xóa các cung đi ra khỏi đỉnh i thì Bờm phải trả Wi- (đồng).

 

Yêu cầu: Hãy giúp Bờm tìm cách xóa bỏ toàn bộ các cung của đồ thị với tổng chi phí phải trả là nhỏ nhất.

 

Dữ liệu: Vào từ file văn bản DESTROY.INP:

  • Dòng đầu tiên chứa 2 số nguyên N và M (1 ≤ N ≤ 100; 1 ≤ M ≤ 5000);
  • Dòng thứ 2 chứa các số W1+, W2+, …, WN+.
  • Dòng thứ 3 chứa các số W1-, W2-, …, WN-.
  • Mỗi một dòng trong số M dòng tiếp theo chứa 2 số nguyên là đỉnh đầu và đỉnh cuối của một cung tương ứng của đồ thị. Đồ thị có thể chứa khuyên (cung nối một đỉnh với chính nó) hoặc các cung lặp (các cung nối cùng một cặp đỉnh).

 

Hạn chế: Các số Wi+Wi- là các số dương không vượt quá 106.

Hai số liên tiếp trên một dòng được ghi cách nhau bởi dấu cách.

 

Kết quả: ghi ra file văn bản DESTROY.OUT:

  • Dòng đầu tiên ghi tổng chi phí theo cách xóa tìm được;
  • Dòng thứ 2 ghi K là số nước đi theo cách xóa tìm được;
  • Mỗi dòng thứ i trong K dòng tiếp theo mô tả một nước đi trong cách xóa tìm được và có dạng: ‘i +’ nếu Bờm xóa các cung đi vào đỉnh i, hoặc ‘i -’ nếu Bờm xóa các cung đi ra khỏi đỉnh i. Giữa chỉ số đỉnh i và dấu ‘+’ (hoặc ‘-’) có đúng một dấu cách.

 

Ví dụ:

DESTROY.INP

3 6

1 2 3

4 2 1

1 2

1 1

3 2

1 2

3 1

2 3

DESTROY.OUT

5

3

1 +

2 –

2 +

 


 

Bài 3: DỌN DẸP BỘ NHỚ

Tên chương trình: DEFRAG.???

 

Bộ nhớ của máy tính có dung lượng V byte được đánh số từ 0 đến V - 1. Các khối bộ nhớ đã được phân phối được xác định bởi các địa chỉ (a1, b1), (a2, b2), …, (aN, bN). Các khối này được sắp xếp theo địa chỉ và không giao nhau, nghĩa là 0 ≤ aj ≤ bj < aj+1 < V. Hệ điều hành cần cung cấp một khối gồm M byte cho một yêu cầu mới xuất hiện. Nếu như không gian nhớ tự do với dung lượng như vậy không còn, thì hệ điều hành cần dịch chuyển một khối nào đó để giải phóng được một đoạn nhớ liên tục có độ dài đòi hỏi.

 

Yêu cầu: Tìm cách chọn khối bộ nhớ với dung lượng nhỏ nhất cần dịch chuyển để đáp ứng yêu cầu đặt ra. Trong trường hợp có nhiều cách lựa chọn, hãy đưa ra khối với địa chỉ đầu nhỏ nhất.

 

Dữ liệu: Vào từ file văn bản DEFRAG.INP: Đầu tiên là các số nguyên V N M, tiếp đến là N cặp số nguyên a1, b1, a2, b2, …, aN, bN. Hai số liên tiếp được ghi cách nhau ít nhất một dấu cách hoặc dấu xuống dòng.

 

Hạn chế: 0 ≤ N ≤ 100000, 1 ≤ V ≤ 1073741824.

 

Kết quả: ghi ra file văn bản DEFRAG.OUT:

  • Chỉ số của khối cần di chuyển hoặc
  • 0 nếu không cần di chuyển hoặc
  • -1 nếu không có cách di chuyển (không thể giải phóng không gian nhớ yêu cầu).

 

Ví dụ:

DEFRAG.INP

10 2 4

1 5 7 7

DEFRAG.OUT

2

 

 
< Trước   Tiếp >