Tổng hợp các đề Olympic tin học quốc tế từ năm 1989 đến 2006

187 518 3
Tổng hợp các đề Olympic tin học quốc tế từ năm 1989 đến 2006

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Tổng hợp các đề Olympic tin học quốc tế từ năm 1989 đến 2006

Đây là cuộc thi Olympiad Quốc tế môn Tin học đầu tiên được tổ chức tại thành phố Pravetz, Bulgaria từ ngày 16 đến ngày 19 tháng 5 năm 1989 Bài toán 1 Cho trước 2*N hộp nằm cạnh nhau trên cùng một hàng với N <= 5. Trong đó có hai hộp liền nhau trống rỗng, các hộp còn lại chứa N-1 vật "A" và N-1 vật "B". Ví dụ, với N = 5 ta có như sau: Quy tắc trao đổi: Chuyển các vật trong hai hộp liền nhau chứa đồ vật sang hai hộp rỗng, giữ nguyên vị trí các hộp. Yêu cầu Tìm cách hoán chuyển sao cho tất cả các hộp chứa vật A nằm bên trái các hộp chứa vật B, không cần biết các hộp rỗng nằm ở đâu. Bài toán đặt ra Hãy viết chương trình: 1. Xây dựng mô hình hoán chuyển các hộp với số hộp và trạng thái ban đầu của các hộp được nhập từ bàn phím. Mỗi hoán chuyển được nhập bằng số (thuộc từ 1 đến N-1) của hai hộp liền nhau đầu tiên sẽ được đổi chỗ cho các hộp rỗng. Chương trình phải tìm và báo cáo trạng thái các hộp sau khi hoán chuyển. 2. Cho trước hiện trạng các hộp, tìm ít nhất một cách hoán chuyển đạt mục tiêu cuối cùng của bài toán. Chương trình phải báo cáo cả trạng thái ban đầu và trạng thái hiện tại sau mỗi bước hoán chuyển. 3. Tìm những cách hoán chuyển để số hộp bị di chuyển ít nhất và vẫn đạt được mục đích. Bài toán 2 Các tầng trong một tòa nhà được đánh số tuần tự từ 0, 1, 2, , N (N<=15). Trong tòa nhà có tất cả K (1<=K<=4) thang máy. Thang máy được điều khiển từ một trung tâm và chỉ chấp nhận hai lệnh được nhập vào bằng cách bấm nút. Các nút ngoài thang máy (một nút ra lệnh lên và một nút ra lệnh xuống) có ở tất cả các tầng. Các nút trong (ra lệnh đến một tầng cụ thể) có trong mỗi thang máy. Hãy viết chương trình mô phỏng quá trình điều khiển thang máy với các lệnh sau: 1. Trong tòa nhà có một thang máy (K=1) và mỗi lần nó chỉ chấp nhận một lệnh. Các lệnh khác chỉ được chấp nhận khi lệnh trước đó được hoàn thành. 2. Trong tòa nhà có nhiều thang máy (K>=1). Mỗi thang máy chỉ chấp nhận lệnh từ nút trong nếu không có lệnh nào đang được xử lý. Thiết bị điều khiển có thể nhận nhiều lệnh cùng lúc. Các lệnh trong luôn được thang máy thực hiện mỗi khi ra lệnh. Thiết bị điều khiển sẽ chọn chiếc thang máy đang rỗi phù hợp nhất để thực hiện lệnh ngoài. 3. Xét trường hợp tương tự trong yêu cầu 2 với điều kiện các thang máy số chẵn chỉ có thể dừng ở các tầng số chẵn và các thang máy số lẻ chỉ dừng ở các tầng số lẻ. Tất cả các thang máy đều có thể dừng ở tầng 0. 4. Xét trường hợp trong yêu cầu 3 và giả sử tại mỗi thang máy có nhiều lệnh đang đợi thực hiện. Tất cả các lệnh trong đều được chấp nhận dù cho thang máy có rỗi hay không. Gợi ý: Tất cả các thang máy đều đồng bộ và tại một điểm thời gian, các thang máy đều ở các tầng cho trước nào đó. Trong một khoảng thời gian tiếp theo, một thang máy có thể đi lên đi xuống hay ở nguyên tầng cũ. Các lệnh có thể nhập vào bất cứ lúc nào, các lệnh có định dạng sau: a, Lệnh ngoài - <số tầng, hướng di chuyển (lên hoặc xuống)>; b, Lệnh trong - <số tháng máy, số tầng> Tại mỗi thời điểm có thể nhập nhiều lệnh hoặc không nhập lệnh nào. Tại mỗi thời điểm chương trình báo vị trí của mỗi chiếc thang máy. Thang máy đủ lớn và không bị quá tải. Chương trình phải điều khiển thang máy sao cho tối ưu nhất. Bài toán 3 Cho trước một nhóm N người. Mỗi người là bạn của hơn [N/2] người còn lại và là kẻ thù của không quá K người. Một người có một cuốn sách mà tất cả mọi người đều muốn đọc và thảo luận với một số người khác. Hãy viết chương trình: 1. Tìm cách truyền tay nhau cuốn sách sao cho tất cả mọi người đều được đọc nó một lần và chuyển nó cho bạn mình và cuối cùng cuốn sách về tay người chủ. 2. Chia nhóm người thành S tổ để thảo luận về cuốn sách. Mỗi người phải có không quá P kẻ thù trong cùng tổ. Giả sử S*P >= K. Bài toán 4 Xét đoạn văn bản được soạn thảo bằng cáctự viết hoa /A-Z/ và 8 ký tự . , + - : / ? ! Đoạn văn bản đó được gửi qua kênh giao tiếp dưới dạng chuỗi byte. Số ký tự 1 trong mỗi byte phải là số chẵn. 1. Đưa ra cách mã hóa cáctự trên bằng các chuỗi nhị phân sao cho cách mã hóa rõ ràng và số bit được gửi qua kênh giao tiếp là ít nhất. 2. Hãy viết chương trình: 2.1. Cho trước đoạn văn bản, hãy in ra đoạn văn bản dưới dạng một chuỗi các số thập lục phân. 2.2. Cho trước đoạn văn bản đã mã hóa nhận được, hãy giải mã và hiển thị đoạn văn bản lên màn hình. Bài toán 5 Xét một hình phẳng gồm n đỉnh, mỗi đỉnh đều bậc 3. Ví dụ: Để các đỉnh X,Y và Z liền kề đỉnh T. Ta nói Y là đỉnh lân cận trái và Z là đỉnh lân cận phải của T tính theo X, nếu góc XTZ nhỏ hơn góc XTY. Ví dụ, E là đỉnh lân cận phải và G là đỉnh lân cận trái của H tính theo A vì góc AHE nhỏ hơn góc AHG. Hãy viết chương trình: 1. Nhập tọa độ của các đỉnh và các cạnh của hình phẳng, hãy vẽ hình đó lên màn hình theo một tỷ lệ phù hợp. Các cạnh được biểu diễn bằng các đoạn thẳng. 2. Cho trước một cặp đỉnh X0 và X1 và một chuỗi cáctự L và R. Hãy tìm một đường đi X0X1X2 Xn trên hình đó sao cho: - X0 và X1 là hai đỉnh bắt đầu; - Xi+1 là đỉnh lân cận trái hoặc đỉnh lân cận phải của Xi tính theo Xi-1 tuỳ theo ký tự thứ (i-2) trong chuỗi điều khiển là L và R. Ví dụ: Đường đi tìm được trong ví dụ trên với A và H là các đỉnh bắt đầu và chuỗi LRRLLR là AHGFEDCB. 3. Vẽ đường đi trong yêu cầu 2 lên màn hình. 4. Dùng một đỉnh bắt đầu và một đỉnh kết thúc, hãy vẽ một đường đi qua số đỉnh ít nhất, vẽ đường đi đó lên màn hình và báo cáo các đỉnh bắt đầu cùng chuỗi điều khiển tạo ra đường đi như trong yêu cầu 2. Bài toán 6 Cho trước một đa giác có 20 cạnh. Các cạnh được đánh số từ 1 đến 20. Hãy tìm đường đi trên hình đa giác 20 cạnh sao cho chỉ đến mỗi cạnh duy nhất 1 lần. Đường đi giá trị C được định nghĩa là tích vô hướng: trong đó fi là số cạnh đi qua ở bước thứ i. Chỉ có thể đi từ cạnh này sang cạnh khác nếu hai cạnh đó nằm lân cận. A. Hai cạnh lân cận nhau nếu có một đỉnh chung; B. Hai cạnh lân cận nhau nếu có một đỉnh chung hoặc có một điểm chung. Hãy tìm các đường đi có giá trị nhỏ nhất cho ví dụ trên. Chú ý: Vì tính phức tạp về thời gian và không gian của thuật toán nên bạn không cần tìm kết quả chính xác mà chỉ cần đưa ra một kết quả tương đối. Cuộc thi Olympiad Tin học Quốc tế lần thứ hai được tổ chức tại MINSK,BYELLORUSSIA năm 1990 Ngày thứ nhất Bài toán 1. Hãy lập chương trình biến đổi bảng số trong hình A thành bảng số trong hình B. Mỗi số trong một ô vuông có thể di chuyển đến một trong các ô trống khác; lúc này ô vuông chứa số đó sẽ trở thành trống. Bài toán 2 Trò chơi với các hộp, yêu cầu người chơi nối các chấm trên lưới. Người chơi hoàn thành một hộp sẽ ghi được 1 điểm và chuyển đến lượt người kia. Trò chơi kết thúc khi lưới được hoàn thành và người thắng cuộc là người nhiều điểm hơn. Chỉ cho phép nối khoảng cách giữa hai điểm theo hàng ngang và hàng dọc. Ví dụ dưới minh họa trò chơi giữa Red và Blue mới được hoàn thành một nửa: Lưới trong trò chơi được minh họa bằng ký tự R và B chỉ các dòng tương ứng Red và Blue điền được, còn số 0 chỉ dòng trống: Trò chơi được thu gọn lại dưới dạng một ma trận như sau: ROBR BRBBB BBRR ROROO OOOB BOOOO BORO OROOR OOOB 1. Hãy viết chương trình xét một ma trận như trên (là một lưới kích thước 5 x 5) và tìm số hộp ba chiều (theo bất kỳ hướng nào). Dữ liệu vào được lưu trong một tệp có 9r dòng minh họa r trò chơi, kết thúc phần mô tả mỗi trò chơi là một dòng chứa từ END. Chương trình báo cáo kết quả của mỗi ma trận trên một dòng: Ma trận r chứa x hộp ba chiều. 2. Sửa lại chương trình, tiếp tục trò chơi chỉ dành cho Blue. Hãy hoàn thành nhiều hộp nhất với một lần di chuyển. Không cần thực hiện lần di chuyển cuối cùng. Chương trình phải báo cáo: x hộp được hoàn thành. Lần di chuyển cuối cùng = L, C trong đó L và C là hàng và cột minh họa ký tự trong ma trận và x là số hộp mới được hình thành nhưng không nằm trong số hộp được hoàn thành trong lưới. Bài toán 3 Có N cuốn sách và 2 người A và B muốn đọc số sách đó. Các số nguyên dương A[I] và B[I] là khoảng thời gian cần thiết để người đọc A (hoặc B) đọc cuốn sách I, 1<=I<=N. Cả hai người đều bắt đầu đọc sách ở thời gian 0. Tại một thời điểm, hai người không đọc cùng một cuốn sách. Cho trước số nguyên K (2<=K<=N) và các cuốn sách được đánh số sao cho không người nào có thể bắt đầu đọc cuốn sách J, (2<=J<=K) cho đến khi cuốn sách J-1 được cả hai người đọc xong. Thứ tự đọc các cuốn sách khác là tuỳ ý. Hai người có thể không đọc liên tục tức là trong quá trình đọc sách, người đọc có thể dừng đọc ở một thời điểm nguyên nào đó sau đó lại tiếp tục từ thời điểm ngừng đó. Trong khoảng thời gian nghỉ đó, người đọc có thể đọc bất kì cuốn sách khác mà người đó chưa đọc xong hoặc đọc tiếp một cuốn sách mới (hoàn toàn chưa đọc gì) mà người đó được quyền đọc . 1. Dữ liệu vào được định dạng như sau: < ENTER N > > < ENTER K > > < ENTER: > < A[1] > > < B[1] > > < A[2] > > < B[2] > > < A[N] > > < B[N] > > 2. Hãy tìm thời gian T lớn nhất sao cho trước thời gian đó cả hai người đọc chưa đọc hết tất cả các cuốn sách; dữ liệu ra t ính giá trị T. 3. Hãy xây dựng lịch trình đọc sách cho mỗi người thỏa mãn tất cả các ràng buộc trên và quá trình đọc sách kết thúc ở thời gian T. Lịch trình đọc sách được định dạng như sau: < Book > < Start > < Finish > Bảng trên chứa tất cả các thời gian trong khi người A (hoặc B) đọc sách và số cuốn sách được đọc. 4. Đưa ra số lần giành quyền đọc sách của mỗi người. Hãy cố gắng giảm số lần giành quyền đọc. Bài toán 4 Cho trước số nguyên K. Một mảnh giấy được chia thành N ô (K<=N<=40). Hai người chơi chọn và lấy đi lần lượt K ô giấy trống liền nhau. Người chiến thắng là người lấy đi ô giấy cuối cùng. 1. Nhập giá trị N và xác định xem người chơi thứ nhất có chiến thắng được không. Đưa ra thông báo "Player 1 has winning strategy" hoặc "Player 1 doesn't have winning strategy". ('Người chơi thứ nhất có thể chiến thắng' hoặc 'Người chơi thứ nhất không thể chiến thắng'). 2. Với N cho trước, hãy xác định xem người chơi thứ nhất có thể chiến thắng không nếu lần chọn đầu tiên của anh ta được nhập từ bàn phím. 3. Hãy viết chương trình mô phỏng người chơi thứ hai với N cho trước và người thứ nhất đi trước. Các nước đi của người chơi thứ nhất được nhập từ bàn phím. Các nước đi được mô phỏng bằng chỉ số của ô giấy L (1<=L<=N-K+1). Các ô giấy từ L đến L+K-1 được chọn và lấy đi trong quá trình chơi. Sau mỗi nước đi, vị trí hiện thời của trò chơi được in ra theo mẫu: 1 2* 3* N Chỉ số được in ra ở phía trên, các ô giấy bị lấy đi được đánh dấu bằng biểu tượng '*'. Khi trò chơi kết thúc hãy in ra báo cáo 'Victory of Player 1 (Player 2)'. Khi nhập giá trị c ủa N và K, in ra 'N>' và 'K>'. Khi nhập nước đi hãy in ra 'Move of Player 1>'. Giả sử dữ liệu nhập vào là chính xác. Bài toán 5. [ PROLAN/M ] Giả sử công ty phần cứng NePhihhan đang phát triển một bộ vi xử lý mới mang tên RISC có khả năng xử lý một kiểu thông tin đơn giản - chuỗi ký tự - và thực hiện một lệnh thay thế đơn giản (tìm kiếm các chuỗi con và thay thế nó bằng các chuỗi con khác). Người ta sử dụng hai vùng bộ nhớ, một vùng chứa chương trình (danh sách các mô tả các thay thế), còn vùng kia (ta sẽ gọi là R với kích thước gần như không giới hạn) được dùng để lưu trữ dữ liệu vào, các kết quả trung gian và kết quả cuối cùng. Các chương trình điều khiển bộ vi xử lý được viết bằng ngôn ngữ được gọi là PROLAN/M. Trước khi mô tả chính thức, ta xét chương trình ví dụ dưới: (aa,b) (ba,a) (bc,a) (c,start) (d,) (b,finish) (,) Khi xử lý chuỗi dữ liệu vào 'abcabcd', chương trình in chuỗi dữ liệu ra 'finish', còn nội dung của R lần lượt là một trong các chuỗi abcabcd, aaabcd, babcd, abcd, aad, db, b, finish. Mô tả cú pháp chính thức của ngôn ngữ PROLAN/M (dùng "::=" để chỉ "được định nghĩa là" và ":" để chỉ "hoặc"): <'PROLAN/M'-program> ::= <substitut.sequence>(,) <substitut.sequence> ::= <substitution>: ::= <substitut.sequence><substitution> <substitution> ::= (<left part>,<right part>) <left-hand part> ::= <string> <right-hand part> ::= <string>:<empty> <string> ::= <string symbol>:<string><string symbol> <empty string> ::= <string symbol> ::= <any ASCII character except ',' , ')' > Sau khi chuỗi dữ liệu được nhập vào R, chương trình được thực hiện như sau: bộ vi xử lý tìm kiếm <substitution> đầu tiên trong <substitut.sequence> trong đó <left-hand part> là chuỗi con của chuỗi trong R. Nếu tìm kiếm thành công, <right-hand part> của cùng <substitution> sẽ thay thế chuỗi con tương ứng trong R (chuỗi tận cùng bên trái nếu kết quả tìm kiếm không là duy nhất). Thủ tục này được lặp lại từ đầu với giá trị R mới đến khi <left-hand part> trong <'PROLAN/M'-program> được tìm thấy là một chuỗi con với giá trị R hiện tại, đây là kết quả cuối cùng và quá trình xử lý kết thúc. Câu 1. Hãy viết và sửa lỗi một chương trình PROLAN/M chuyển một chuỗi kiểu <nat.nr1>+<nat.nr2>=? (trong đó <nat.nr1> và <nat.nr2> là các chuỗi số thập phân hiện thân là các số tự nhiên) thành một chuỗi kiểu <nat.nr1>+<nat.nr2>=<nat.nr3> chứa đựng phát biểu toán học đúng (<nat.nr1> và <nat.nr2> như nhau). Ví dụ, chuỗi 1990+123=? được chuyển thành 1990+123=2113 sau quá trình xử lý. Lưu chương trình của bạn vào tệp SUM.PRM. Câu 2. Viết chương trình sửa lỗi theo ngôn ngữ PROLAN/M thực hiện nhiệm vụ sau: (a) Lưu tên tệp văn bản theo ngôn ngữ PROLAN/M; (b) Tìm nội dung ban đầu của R; (c) Biểu diễn quá trình chuyển chuỗi dữ liệu vào bằng chương trình trong tệp văn bản; (d) hiển thị kết quả lên màn hình; (e) Tìm sơ đồ chuyển đổi. Bài toán 6 Cho trước các số nguyên a và n (n<100). Giả sử một ngôn ngữ lập trình tưởng tượng chứa chỉ lệnh và phép nhân. Hãy viết chương trình tạo 1 văn bản bằng ngôn ngữ đó cho biểu thức b=a^n, với số phép nhân ít nhất. Ví dụ dưới xét đoạn văn bản được tạo ra với n=13, trong đó giữa cặp dấu {} chứa chú giải: X1:=a; {=a} X2:=X1*X1; {=a^2} X3:=X2*X2; {=a^4} X4:=X3*X1; {=a^5} X5:=X3*X3; {=a^8} X6:=X5*X4; {=a^13} b:=X6; Ngày thi thứ hai Bài toán 1 Mỗi nhân viên bảo vệ trong một triển lãm nghệ thuật phải làm nhiệm vụ trong một khoảng thời gian. Chương trình bảo vệ được biểu diễn bằng các cặp [T1(i),T2(i)] - chỉ thời điểm bắt đầu và kết thúc ca làm việc của nhân viên bảo vệ thứ i. Cho trước một chương trình bảo vệ, hãy: (a) Kiểm tra xem có ít nhất hai người bảo vệ nào làm nhiệm vụ trong khoảng thời gian [0, EndTime]. Nếu điều kiện (a) không thỏa mãn, hãy (b) Xác định tất cả các khoảng thời gian thiếu nhân viên bảo vệ (ít hơn 2 người đang làm nhiệm vụ). (c) Xác định số nhân viên bảo vệ cần bổ sung ít nhất làm nhiệm vụ trong một khoảng thời gian bắt buộc theo chương trình bảo vệ, ví dụ, bổ xung nhân viên thỏa mãn điều kiện (a). INPUT (Tất cả thời gian đều là số nguyên tính bằng phút) EndTime - thời điểm kết thúc nhiệm vụ canh gác, triển lãm cần canh gác trong khoảng thời gian [0, EndTime]. N - số nhân viên bảo vệ. T1[i]. T2[i], i=1, , N - thời gian bắt đầu và kết thúc ca trực của nhân viên thứ i. Length - thời gian làm việc bắt buộc đối với một nhân viên bổ sung. OUTPUT (1) Câu trả lời cho yêu cầu (a) theo định dạng "Yes/No". (2) Nếu câu trả lời trước là "no", hãy kiệt kê các cặp số (k,1) - chỉ thời gian bắt đầu và kết thúc của tất cả các khoản thời gian thiếu nhân viên bảo vệ và số số nhân viên thiếu trong mỗi khoảng thời gian đó (0 hoặc 1 người). (3) Số nhân viên bổ sung và danh sách các thời gian bắt đầu và kết thúc trong khoảng thời gian bắt buộc của mỗi nhân viên bổ sung. Bài toán 2 N đoạn được đặt trên mặt phẳng theo tọa độ các điểm cuối, N>0. Các điểm cuối của một đoạn được biểu diễn bằng hai cặp (x1[i], y1[i]) và (x2[i], y2[i]), 1<=i<=N. Điểm cuối của một đoạn bất kỳ đều thuộc đoạn đó. Hãy viết chương trình để: 1. Biểu diễn dữ liệu vào theo mẫu <Nhập giá trị N số đoạn :> <Nhập tọa độ của đoạn thứ i:> x1[1] > y1[1] > x2[1] > y2[1] > ::: ::: 2. Hãy tìm đường thẳng có chứa các điểm chung với nhiều đoạn thẳng nhất có thể. Báo cáo kết quả theo thứ tự tăng dần số đoạn thẳng chứa các điểm chung với đ ường thẳng này. Bài toán 3 Các điểm nút đánh số từ 1 đến N (N<=50) được nối với nhau bằng một hệ thống đường phố, trong đó mỗi đường phố đều có chiều bằng 1. Các đường phố có độ cao khác nhau và chỉ cắt nhau ở các điểm nút. Tại thời điểm ban đầu 0 có một số robot ở một số nút. Tổng số robot là M (M = 2 hoặc 3). Các robot di chuyển liên tục từ nút này đến khác một cách độc lập nhau và có thể thay đổi hướng di chuyển tại các nút. Các robot không được dừng lại. Vận tốc của robot thứ i là speed[i] (speed[i] = 1 hoặc 2). Các robot được điều khiển theo cách sao cho tổng thời gian để các robot gặp nhau là ít nhất. Hãy xác định thời gian T nhỏ nhất để sau đó tất cả các robot có thể gặp nhau tại 1 điểm, hoặc nếu không xác định thời gian T nhỏ nhất để các robot không thể gặp nhau tại cùng một điểm với bất kỳ thời gian t >= 0 nào. Định dạng dữ liệu vào như sau: <Nhập vào N:> <Nhập số đường phố K:> < Đường 1 nối với các điểm:> < Đường K nối với các điểm:> (Các cặp điểm được nhập vào: I J) <Nhập số robot M:> <Vận tốc của robot 1:> <Vận tốc của robot 1:> <Vị trí ban đầu của robot 1:> <Vị trí ban đầu của robot 1:> (Tất cả các số trên đều là số nguyên không âm) Định dạng dữ liệu ra như sau: <Thời gian = > Bài toán 4 Tất cả các con phố của một thành phố dạng hình chữ nhật nằm trên một vùng không bằng phẳng. Các con phố được ký hiệu từ Nam ngược lên Bắc (các phố N) hoặc từ Tây sang Đông (các phố M), do đó thành phố được chia thành các ô vuông với kích thước đều bằng 1. Các đoạn phố nằm giữa hai điểm giao liền nhau chỉ chạy theo xuống hoặc lên hoặc có thể nằm ngang. Ma trận K[y,x] (kích thước M x N) chứa độ cao của các điểm giao cắt so với mực nước biển. Hãy viết chương trình thực hiện: 1. Nhập kích thước ma trận M và N. 2. Nhập các phần tử của ma trận H[i,j]; (i=1,M , j=1,N). 3. Nhập tọa độ của hai điểm giao A và B. 4. Trả lời câu hỏi: Có thể đi từ A sang B hoặc từ B sang A mà chỉ đi theo hướng xuống? Nếu câu trả lời với dữ liệu câu 3 là luôn khẳng định, chương trình còn phải: 5. Xác định ít nhất một đường đi như vậy và hiển thị tọa độ của điểm giao lên màn hình. 6. Xác định tất cả các đường đi như vậy. [...]... chương trình tính tổng lớn nhất của các số nằm trên lộ trình đi từ đỉnh tam giác xuống đến một điểm ở đáy tam giác * Tại mỗi bước đi, lộ trình có thể đi xuống phía bên trái hoặc xuống phía bên phải * Số hàng trong tam giác lớn hơn 1 và nhỏ hơn hoặc bằng 100 * Các số nằm trong tam giác đều là số nguyên trong đoạn từ 0 đến 99 Trong ví dụ trên, lộ trình đi qua các điểm 7,3,8,7,5 có tổng các số là lớn nhất... mỗi bộ dữ liệu được ngăn cách bằng một dòng trống Ví dụ: Bài toán 3 Các hình chữ nhật với các màu khác nhau (Rectangles of different colours) Có N hình chữ nhật màu sắc khác nhau được đặt chồng lên một tờ giấy trắng Kích thước tờ giấy trắng là: rộng a cm và dài b cm Các hình chữ nhật được xếp sao cho các cạnh của chúng song song với các cạnh tờ giấy Tất cả các hình chữ nhật đều nằm trong tờ giấy Kết... chuyến bay trực tiếp từ thành phố city1 đến city2 và một chuyến bay trực tiếp ngược lại Các bộ dữ liệu được ngăn cách bằng một dòng trống Sau bộ dữ liệu cuối cùng không có dòng trống Các ví dụ sau được lưu trong tệp C:\IOI\ITIN.DAT Giả sử input luôn đúng không cần kiểm tra lại Kết quả xử lý mỗi bộ dữ liệu được lưu trong tệp C:\IOI\ITIN.SOL theo định dạng ASCII Dòng đầu tiên của tệp chứa tổng số thành phố... cấp M(j) mà người leo núi (j) mang theo lúc khởi hành (j nằm từ 1 đến k) Chú ý, có thể không tồn tại một kế hoạch cho cho sự kết hợp N, S(i) và C(i) 3 Báo cáo các thông tin sau ra màn hình: a) số người leo núi thực tế k tham gia leo núi, b) tổng số đồ dùng cần được cấp, c) số người leo núi a(1), , a(k), d) với mọi a(j), j nằm giữa 1 và k, tổng số đồ dùng được cấp M(j) được người a(j) mang theo e) ngày... phương Rubik cho đến khi hình lập phương trở lại trạng thái ban đầu Hãy chọn số lần áp dụng nhỏ nhất (> 0) Ví dụ Yêu cầu kỹ thuật Lưu lời giải vào một tệp văn bản ASCII có tên "C:\IOI\DAY-2\423-PROG.xxx" Phần mở rộng xxx là: - BAS với chương trình BASIC, C với chương trình C, - LCN với chương trình LOGO, PAS với chương trình PASCAL Đây là cuộc thi Olympiad Quốc tế môn Tin học lần thứ năm Đề thi ngày thứ... viết chương trình để: 1 Đọc từ tệp input COMPANY.DAT theo định dạng ASCII danh sách các bộ dữ liệu ba số (i,j,p) trong đó i, j và p là các số nguyên dương Giữa các bộ dữ liệu có một dòng trống 2 Tìm tất cả các cặp số (h,s) sao cho công ty h kiểm soát được công ty s 3 Lưu dữ liệu ra vào tệp output COMPANY.SOL theo định dạng ASCII tất cả các cặp (h,s) tìm được với h khác s Các cặp số (h,s) được lưu liên... cuộc gặp thì người gặp sẽ là trình dược viên có khoảng thời gian rỗi dài hơn Nếu cả hai trình dược viên đều có khoảng thời gian rỗi như nhau, A sẽ thực hiện cuộc gặp đó Kết quả ra gồm hai danh sách các cuộc gặp Cuộc thi Olympiad Quốc tế môn Tin học lần thứ tổ chức tại Bonn, Germany, tháng 7 năm 1992 1 Khám phá bản đồ Một bản đồ hình chữ nhật có kích thước theo hệ tọa độ là 48 x 16 Hai tọa độ được... số nguyên nằm từ 1 đến 64 Màu trắng được biểu diễn bằng số 1 Thứ tự các dòng dữ liệu tương ứng với thứ tự xếp các hình chữ nhật vào tờ giấy Giữa các bộ dữ liệu khác nhau có một dòng trống Hãy viết chương trình thực hiện: 1 Đọc bộ dữ liệu tiếp theo từ tệp RECTANG.DAT 2 Tính diễn tích mỗi vùng màu khác nhau trên tờ giấy 3 Lưu vào tệp RECTANG.SOL theo định dạng ASCII màu sắc và diện tích các vùng màu... phương tiện khác Cho trước một danh sách các thành phố có đường bay của hãng và một danh sách các chuyến bay trực tiếp giữa hai thành phố, hãy tìm hành trình có thể đến thăm càng nhiều thành phố càng tốt và thỏa mãn các điều kiện bắt đầu từ thành phố đầu tiên, đến thăm được thành phố cuối cùng và trở lại thành phố đầu tiên Input chứa nhiều bộ dữ liệu là một tệp C:\IOI\ITIN.DAT theo định dạng ASCII Mỗi bộ... điểm khởi hành Yêu cầu Hãy viết chương tình thực hiện các nhiệm vụ sau: 1 Nhập từ bàn phím số nguyên N chỉ số ngày cần thiết để lên đến đỉnh núi, số người leo núi P của câu lạc bộ, số đồ dùng được cấp S(i) và số đồ dùng cần thiết C(i) của người thứ i (i nằm từ 1 đến P) Giả sử dữ liệu vào đều là số nguyên 2 Lập kế hoạch cho câu lạc bộ leo núi Xác định các nhóm leo núi a(1), , a(k) và số đồ dùng được cấp . đầu. V. S-TERMS S-term là một chuỗi gồm các ký tự S và dấu ngoặc đơn được định nghĩa một cách đệ quy như sau: S là một S-term, và nếu M và N là các s-term, thì (MN) cũng là một s-term. Ví. S-term được gọi là rút gọn S-term. Có nhiều cách khác nhau để chọn một chuỗi con để áp dụng quy tắc S. Một ứng dụng khác của quy tắc trên với một S-term được gọi là "chuẩn hóa" S-term chuỗi" để tạo ra các S-term: thủ tục của bạn phải sinh ra n (n = độ dài = số ký tự S trong chuỗi) tệp văn bản chứa tất cả các S-term có độ dài lần lượt là 1, , n. Các S-term được ngăn cách bằng

Ngày đăng: 04/06/2014, 11:59

Tài liệu cùng người dùng

Tài liệu liên quan