Bài 1: Robo: Một HCN kích thước M x N (bờ trái và bờ phải là cạnh có kích thước M, bờ trên và bờ dưới có kích thước n). HCN được chia thành các ô vuông bởi các dòng và cột song song với các cạnh. Các dòng đánh số từ 1 đến M theo chiều từ trên xuống dưới, các cột được đánh số từ 1 đến N theo chiều từ trái qua phải. mỗi ô vuông đơn vị có một độ cao nào đó. Một robo di chuyển từ bờ trên của HCN xuống bờ dưới. Robo chỉ di chuyển từ ô đang đứng tới một ô mới ở dòng dưới cùng cột hoặc chênh lệch một cột và không ra ngoài bờ trái hoặc bờ phải. Khi đi từ ô này sang ô kia robo mất một năng lượng bằng trị tuyết đối của hiệu giữa độ cao ô tới và ô vừa rời khỏi. Hãy tìm đường đi cho robo mất ít năng lượng nhất. DL vào: Từ tệp Bai1.Inp - Dòng 1 chứa hai số M, N. - Tiếp theo là M dòng mỗi dòng n số thể hiện ma trận độ cao của các ô vuông HCN-là các số nguyên. Kết quả: Ghi vào tệp Bai1.Out. - Dòng 1 ghi năng lượng robo bị mất đi ít nhất khi di chuyển từ bờ trái sang bờ phải. - Các dòng tiếp theo mỗi dòng ghi hai số là tọa độ dòng và cột của một ô mà robo có mặt trình tự theo đúng hành trình của robo. VD: Bài 2: HCN lớn nhất DL vào DL ra 5 5 3 3 8 1 5 7 7 3 14 1 6 7 18 1 1 20 20 17 23 24 31 20 27 10 6 1 2 1 3 2 4 3 3 4 2 5 2 Cho bảng hai chiều m dòng, n cột. Mỗi ô chứa một số nguyên. Tìm trong bảng một HCN có tổng các số trên các ô là lớn nhất (HCN này được gọi là HCN lớn nhất trong các HCN thuộc bảng). Một HCN có thể gồm một số ô 1 x 1 kề nhau hoặc chiếm toàn bộ bảng. DL vào: Tệp Bai2.Inp: - Dòng một chứa hai số m, n (m,n<=100) - M dòng tiếp theo mỗi dòng gồm N số nguyên thuộc [-127,127] Kết quả: Tệp Bai2.Out - Dòng 1 là tổng các số các ô của HCN lớn nhất - Dòng 2 là 4 số thể hiện tọa độ các ô ở góc trái trên và góc phải dưới của HCN lớn nhất. VD: Bài 3. Cắt vải: Cho một mảnh vải HCN có kích thước m x n. Hãy tìm cách cắt mảnh vải thành các hình vuông sao cho số hình vuông là ít nhất DL vào: Tệp Bai3.Inp: Chứa hai số m,n (m,n<=10000) Kết quả: Tệp Bai3.Out: Chứa một số duy nhất là số hình vuông trong cách cắt ít hình vuông nhất. VD: Bài 4. Cắt HCN Cho bảng A gồm m dòng, n cột mỗi ô chứa một số là 0 hoặc 1. Người ta muốn cắt bảng A thành các HCN con sao cho các ô trong mỗi HCN con toàn là 0 hoặc toàn là 1. Mỗi lần cắt là một nhát cắt thẳng theo dòng hoặc theo cột của một HCN thành hai HCN riêng biệt, cứ tiếp tục cắt cho đến khi được mọi HCN toàn bằng 0 hoặc toàn bằng 1. Hãy tìm cách cắt để được ít HCN nhất mà các HCN thu được toàn bằng 0 hoặc toàn bằng 1. DL vào: Tệp Bai4.Inp: - Dòng 1 chứa hai số m, n (1<=m,n<=20) - m dòng tiếp theo mỗi dòng gồm n số chỉ các số 0 hoặc 1. DL vào DL ra 0 -2 -7 0 9 2 -6 2 4 1 -4 1 -1 8 0 -2 15 2 1 4 2 DL vào DL ra 4 4 0 4 3 4 Kết quả: Tệp Bai4.Out: Chứa một số duy nhất là số HCN ít nhất. VD: Bài 5. Đa giác Cho n điểm trên một mặt phẳng tọa độ, các điểm có tọa độ là những số tự nhiên. Một đa giác lồi “cự đại” là đa giác lồi có các đỉnh là một số điểm trong các điểm đã cho và gốc tọa độ mà số lượng đỉnh nhiều nhất. Gốc tọa độ (0,0) phải là một đỉnh của đa giác này. Viết một chương trình xác định số đỉnh của đa giác lồi cực đại. Một đa giác là lồi nếu mỗi đoạn thẳng có hai đầu nằm trong đa giác thì đoạn thẳng ấy nằm hoàn toàn trong đa giác. Các cạnh liên tiếp của đa giác lồi không được cùng phương. DL vào: Tệp Bai5.inp; - Dòng 1 chứa số n (2<=n<=100). - n dòng tiếp theo, mỗi dòng gồm hai số x,y (1<=x,y<=100) (Tất cả các điểm là phân biệt) Kết quả: Tệp Bai5.Out: - Dòng 1 chứa số đỉnh của đa giác lồi cực đại. - Các dòng tiếp theo chứa hai số x,y là tọa độ các đỉnh đa giác lồi. VD: Bài 6: Hai dãy con tương thích Hai dãy số nguyên A={a1,a2,…,an} và B={b1,b2,…,bn} được gọi là tương thích nếu thỏa mãn hai điều kiện: - Tại mỗi vị trí i với mọi j ≠ I nếu ai=aj thì bi=bj - Tại mỗi vị trí i với mọi j ≠ I nếu ai≠aj thì bi≠bj Cho hai dãy con X={x1,x2,…,xn} và Y={y1,y2,…,ym} (hạn chế: 1<=m,n<=100; 1<=ai,bi<=1000; mọi i=1,2,3….) DL vào DL ra 5 5 0 1 0 0 1 0 1 0 0 1 1 1 0 0 1 0 0 1 0 0 8 DL vào DL ra 5 4 2 2 2 2 3 3 2 3 1 4 4 3 2 4 2 3 1 0 0 Hãy tìm hai đoạn con với các phần tử liên tiếp của x và y tạo thành hai dãy con tương thích dài nhất. DL vào: Tệp Bai6.Inp - Dòng 1 chứa số m,n - Dòng 2 ghi dãy số X - Dòng 3 ghi dãy số Y Kết quả: Tệp Bai6.Out ghi độ dài của dãy con tương thích dài nhất. VD. DL vào DL ra 6 7 5 2 3 5 4 4 1 2 3 4 2 6 1 5 . cột. Mỗi ô chứa một số nguyên. Tìm trong bảng một HCN có tổng các số trên các ô là lớn nhất (HCN này được gọi là HCN lớn nhất trong các HCN thuộc bảng). Một HCN có thể gồm một số ô 1 x 1 kề nhau. (m,n<=10000) Kết quả: Tệp Bai3.Out: Chứa một số duy nhất là số hình vuông trong cách cắt ít hình vuông nhất. VD: Bài 4. Cắt HCN Cho bảng A gồm m dòng, n cột mỗi ô chứa một số là 0 hoặc 1. Người ta muốn. Chứa một số duy nhất là số HCN ít nhất. VD: Bài 5. Đa giác Cho n điểm trên một mặt phẳng tọa độ, các điểm có tọa độ là những số tự nhiên. Một đa giác lồi “cự đại” là đa giác lồi có các đỉnh là một