CHUYÊN đề HÌNH học trong tin học ti18

32 1K 7
CHUYÊN đề HÌNH học trong tin học ti18

Đ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

CHUYÊN ĐỀ HÌNH HỌC A PHẦN MỞ ĐẦU I Lý chọn đề Trong trình giảng dạy học sinh đội tuyển tham gia thi chọn học sinh giỏi cấp Tơi học trò vấp phải nhiều khó khăn Do nguồn tài liệu mạng thi nhiều đa phần tiếng anh, tài liệu tiếng Việt thiếu tính hệ thống Vì tơi chọn viết đề tài với mục tiêu cung cấp đến người đọc tốn hình học tin học với phần cài đặt ngôn ngữ C++ Trong nội dung đề tài trao đổi với thầy tính tốn hình học tin Ứng dụng giải số toán hình học tiêu biều Các tốn có đề bài, hướng dẫn giải, code test II Mục đích đề tài Nghiên cứu đề tài: “Một số tốn hình học Tin học ứng dụng” nhằm giúp học sinh tiếp cận, làm quen giải tốn hình học lập trình Vận dụng giải tốn tin học có sử dụng kiến thức hình học, phát triển tư lôgic cho học sinh đồng thời nâng cao khả tự học học sinh, tạo hứng thú học tập môn Tin học III IV Thời gian địa điểm: suốt năm học, địa điểm: Trường THPT Chuyên Hạ Long Đóng góp mặt thực tiến: Đề tài có nhiều tập hay, có đủ test solution tài liệu phục vụ thiết thực cho việc giảng dạy đổi tuyển B PHẦN NỘI DUNG I LÝ THUYẾT Thuật giải cho tốn hình học thường khơng khó, u cầu học sinh phải làm việc cẩn trọng, tỉ mỉ tập trung khơng dẫn đến sai lầm Mặc dù kiến thức hình học em học mơn Tốn Nhưng trước tiên ta nhắc lại số khái niệm bản: Biểu diễn hình học máy tính Trong chun đề này, thống cách biểu diễn khái niệm điểm, đường thẳng, đa giác sau: • Điểm struct Point { int x; int y; }; • Đường thẳng: struct LineSegment { P1, P2: Point; }; • Véc tơ Struct Vector { P1, P2: Point; }; • Đa giác: Point Polygon[n]; Để thuận lợi biểu diễn đa giác ta nên thêm hai đỉnh đầu cuối: đỉnh đỉnh n đỉnh n + đỉnh Điểm, đoạn thẳng - đường thẳng, diện tích đa giác 2.1 Quan hệ điểm - hàm CCW a) Khoảng cách hai điểm: Double Dist(Point P1, Point P2){ return sprt(abs(P1.x – P2.x)*(P1.x-P2.x) + (P1.y-P2.y)*(P1.y-P2.y)); ///bỏ abs } int CCW(Point p, Point q, Point r) { int val = (q.y - p.y) * (r.x - q.x) - (q.x - p.x) * (r.y - q.y); if (val == 0) return 0; return (val > 0)? 1: 2; } b) Hệ số góc đường thẳng qua hai điểm: Cho hai điểm Nếu AB khơng song song với trục Oy hệ số góc đường thẳng AB là: c) Kiểm tra ba điểm có thẳng hàng hay khơng? Giả sử cho trước ba điểm - Viết phương trình đường thẳng AB, AC - Giả sử ; phương trình tối giản hệ số - Khi đó, A, B C thẳng hàng d) Kiểm tra hai đoạn thẳng giao hay không bool onSegment(Point p, Point q, Point r) { if (q.x = min(p.x, r.x) && q.y = min(p.y, r.y)) return true; return false; } bool doIntersect(LineSegment LS1, LineSegment LS2) { Point p1, Point q1, Point p2, Point q2; p1 = LS1.p1; q1 = LS1.p2; p3 = LS2.p1; q2 = LS2.p2; int o1 = CCW (p1, q1, p2); int o2 = CCW (p1, q1, q2); int o3 = CCW (p2, q2, p1); int o4 = CCW (p2, q2, q1); if (o1 != o2 && o3 != o4) return true; if (o1 == && onSegment(p1, p2, q1)) return true; if (o2 == && onSegment(p1, q2, q1)) return true; if (o3 == && onSegment(p2, p1, q2)) return true; if (o4 == && onSegment(p2, q1, q2)) return true; return false; } e) Diện tích đa giác : int Area (Point p[n]){ int s; p[n] = p[0]; for(int i = ; i Lưu chúng vào mảng A, sau thêm điểm R vào cuối mảng A Quy hoạch động dp[i] có nghĩa chi phí tối thiểu để xây bao lồi cho: o Bao lồi bắt đầu R, kết thúc điểm A[i] (bao lồi bị “hở”, A[i] = R bao lồi kín đáp án) o Mọi nhìn cạnh bao lồi theo chiều ngược kim đồng hồ Ta xét điểm A[j], cho j < i Nếu tất nhìn cạnh (A[j],A[i]) theo chiều ngược kim đồng hồ (có nghĩa OA[j] x OA[i] > với O) ta tính dp[i] = min(dp[i], dp[j] + dist(A[i], A[j])) dist(A, B) khoảng cách điểm A B - Đáp án phần tử cuối mảng dp (khi A[i] = R) Code: https://www.dropbox.com/s/xvbbbl5quajn8xa/Raovuon.rar?dl=0 Test: http://vn.spoj.com/problems/RAOVUON/ 2.3 BÀI TẬP TỔNG HỢP Bài Bàn tiệc mùa xuân (table) (nguồn: codeforces.com) Gnouc giúp mẹ chuẩn bị mâm cơm đêm giao thừa, mâm cơm có dạng hình tròn với bán kính R Gia đình Gnouc chuẩn bị n đĩa thức ăn có dạng hình tròn đĩa thức ăn có bán kính r Gnouc băn khoăn liệu xếp tất đĩa thức ăn lên mâm cơm cho tất đĩa thức ăn phải nằm trọn vẹn mâm phải chạm vào thành mâm Tất nhiên đĩa không xếp chồng lên chúng tiếp xúc với Ví dụ với n = 4, R = 10, r = ta có cách xếp đĩa thức ăn sau: Dữ liệu: - Gồm dòng chứa ba số nguyên n, R, r (1 ≤ n ≤ 100, 1 ≤ r, R ≤ 1000) Kết quả: - Ghi thông báo “YES” xếp đĩa thức ăn theo yêu cầu đề bài, ghi thông báo “NO” trường hợp ngược lại Ví dụ: Input 10 10 10 10 Output YES NO YES Hướng dẫn thuật toán + code + test: https://www.dropbox.com/s/50y8qfmruterqty/table.rar?dl=0 Bài Tứ giác lớn (nguồn: codeforces.com) Cho tập gồm n điểm mặt phẳng tọa độ Decartes khơng có điểm thẳng hàng điểm trùng Tìm tứ giác có diện tích lớn tạo nên số n điểm tập điểm nói Lưu ý tứ giác khơng thiết phải lồi Dữ liệu: - Dòng chứa số nguyên n (1 ≤ n ≤ 300) - n dòng dòng chứa số nguyên xi, yi (-1000 ≤ xi, yi ≤ 1000) Kết quả: - Đưa số thực với độ xác chữ số sau dấu phẩy kết tốn Ví dụ: Input 0 4 Output 16.000000 4 Hướng dẫn thuật toán : - Ta xét điểm, coi đường chéo tứ giác, đường chéo phải chia - tứ giác thành mặt phẳng, điểm điểm lại nằm mặt phẳng, với tứ giác lồi đường chéo thỏa mãn điều trên, với tứ giác lõm có đường chéo Với điểm ta xét tất đỉnh lại phân hoạch vào phần, phần nằm “bên trái” (rẻ trái), phần nằm “bên phải” (rẽ phải) (dùng hàm CCW) Như với phần ta lưu diện tích lớn tam giác tạo điểm xét điểm nằm phần này, kết tổng diện tích lớn phần Test+Code: https://www.dropbox.com/s/21u5h4xt2klofvv/maxquad.rar?dl=0 Bài 3: Mặt trời chiếu sáng (SUNSHINE) (Nguồn: Kì thi talipan chuyên KHTN) Cuộc sống xứ sở Thiên đường XHCN tuyệt diệu: thức ăn ngon, âm nhạc,… Nhưng có vấn đề: Mây Tuy nhiên, quyền Thiên đường quan tâm đến vấn đề này: tòa nhà cao tầng xây dựng khơng q gần để tòa nhà nhận ánh nắng vài tiếng ngày Để đơn giản, coi Thiên đường đườngthẳng chạy từ đông sang tây Mỗi ngày Thiên đường có 12 nhờ vào thành tựu xây dựng phi thường, tòa nhà có chiều cao Giáo sư Natsu du lịch đến phố có N tòa nhà, tòa nhà thứ i cách mốc đầu đường wivà có độ cao hi Giáo sư muốn biết số lượng tòa nhà chiếu sáng khơng 6h (làm tròn đến giây) Số tòa nhà chiếu sáng tỷ lệ với góc ánh nắng mặt trời tới tòa nhà ( ≥ 12h, 6h, ≤ 0h,…) – làm tròn đến chữ số thứ sau dấu chẩm thập phân (Xem hình vẽ) Dữ liệu: - Dòng đầu ghi số Sau N dòng, dòng ghi số nguyên Chú ý i < j Các tòa nhà liệt kê theo chiều từ trái qua phải Kết quả: - In số tòa nhà thỏa mãn Ví dụ: Sunshine.inp 08 46 64 71 11 20 Sunshine.out Hướng dẫn thuật tốn: Coi đỉnh ngơi nhà điểm, tầm nhìn đỉnh A bị giới hạn đỉnh B C, đỉnh bên trái đỉnh bên phải, cho góc BAC nhỏ Nói cách khác, B điểm bên trái A cho góc tạo BA với trục Oy nhỏ nhất, tức đường thẳng BA nằm tất điểm khác mà nằm bên trái A - Để tìm điểm B với điểm A, ta sử dụng tư tưởng ngăn xếp tương tự cài bao lồi: Duy trì ngăn xếp (stack) chứa đỉnh chưa nằm đường thẳng Trước đưa đỉnh A vào stack, ta kiểm tra đỉnh C đầu stack có nằm đường thẳng AB, với B đỉnh thứ hai stack, hay không Với đỉnh A, đỉnh B cần tìm đỉnh đầu stack trước xếp A vào stack (nếu stack rỗng A khơng bị chặn điểm cả) Cuối cùng, ta cần đếm số đỉnh A cho A không bị chặn hướng góc BAC tù Độ phức tạp: Test + code: https://www.dropbox.com/s/9gsoz9yzfv6hvju/Sunshine.rar?dl=0 Bài 4: Cắt hình vuông (squarepart) (Nguồn: Thầy Hồ Đắc Phương Chuyên KHTN) Xét lưới điểm nguyên Xét điểm nguyên nằm cạnh hình vng có cạnh song song với trục tọa độ Các điểm đánh số từ 1, từ góc bên trái theo chiều ngược chiều kim đồng hồ (xem hình minh họa) Sau hình vuông cắt số đoạn thẳng nối điểm nguyên Đếm xem đoạn thẳng chi hình vng thành phần Dữ liệu: - Dòng đầu ghi số n k, n độ dài cạnh hìnhvng, k số đoạn thẳng - dùng để cắt () Sau k dòng, dòng ghi số số thứ tự điểm đầu mút đoạn thẳng (tất đoạn thẳng khơng nằm cạnh hình vng) Kết quả: - In số mảnh hình vng bị cắt Ví du: Squarepart.inp 86 23 15 19 28 18 30 14 21 17 Squarepart.out 16 Hướng dẫn thuật toán: - Ta dễ dàng nhận thấy tốn tương đương với tốn tìm số miền đồ - thị phẳng Với đỉnh đồ thị điểm giao điểm, cạnh đoạn thẳng nối điểm mà không qua điểm khác (Tìm hiểu đồ thị phẳng đây: https://en.wikipedia.org/wiki/Planar_graph) Ta có tính chất đồ thị phẳng : V - E + F = Trong V số đỉnh, E số cạnh, F số miền Trở lại với toán ta thấy kết tốn F - (ko tính phần ngồi cùng) Vậy cần đếm số đỉnh số cạnh Ta duyệt đoạn thêm vào, với đoạn ta kiểm tra xem với đoạn phía trước xem có giao điểm tạo thành (chính lượng đỉnh tăng lên) xem đoạn thêm vào bị chia thành phần (chính lượng đỉnh tăng lên) Các thao tác quản lí set Test+code: https://www.dropbox.com/s/lwv6iqqmulgkjxn/squarepart.rar?dl=0 Bài 5: Đa giác (Polygon) (nguồn: codeforces.com) Sơn muốn sử dụng gỗ có sẵn để ghép thành hàng rào xung quanh vườn Hàng rào có dạng hình đa giác lồi (diện tích khác 0) ghép từ cạnh gỗ đặt nằm ngang Sơn không muốn cưa hay phá hỏng gỗ để làm hàng rào Rõ ràng từ gỗ ghép thành hàng rào đa giác lồi Ví dụ từ gỗ có độ dài ghép thành hàng rào tam giác, nhiên từ gỗ có độ dài khơng thể ghép thành hàng rào tứ giác gỗ dài lớn tổng độ dài gỗ lại Sơn có gỗ Sơn tự hỏi có cách chọn gỗ từ có để từ chúng ghép thành hàng rào đa giác lồi Hai cách chọn gọi khác có gỗ thuộc cách chọn không thuộc cách chọn Yêu cầu: Bạn giúp Sơn trả lời câu hỏi Do số lượng cách chọn lớn nên bạn cần đưa số dư số cách chọn phép chia cho Dữ liệu: - Dòng chứa số nguyên số lượng gỗ - Dòng thứ hai chứa số nguyên độ dài gỗ Kết quả: - Ghi dòng kết tốn Ví dụ: polygon.inp 12346 5555 10 50 12 16 14 17 polygon.out 40 Giải thích: Ví dụ 1: Ta có đa giác với độ dài cạnh tương ứng là: Ví dụ 2: Chọn ba cạnh cạnh ln tam giác đều, ta có tam giác với độ dài cạnh tương ứng là: Chọn cạnh ta thêm tứ giác Vì kết tốn Hướng dẫn thuật toán: - Nhận xét: Một tập hợp gỗ ghép thành đa giác lồi - độ dài dài nhỏ tổng độ dài lại Trước tiên ta xếp lại độ dài gỗ theo thứ tự tăng dần Khi xét gỗ , ta tìm số cách chọn gỗ từ đến cho tổng gỗ lớn Ta đếm cách đếm phần bù, đếm số cách chọn gỗ cho tổng gỗ Đến ta sử dụng quy hoạch động, toán quy hoạch động bản, gọi số cách chọn gỗ từ đến cho tổng gỗ Từ ta dễ dàng tìm kết tốn Test+code: https://www.dropbox.com/s/sqz9w5iizogkyrd/Polygon.rar?dl=0 Bài 6: Nối dây (Lines) (nguồn: sưu tầm) Cho hai đường thẳng song song nằm ngang a b Trên đường thẳng, người ta chọn lấy n điểm phân biệt gán cho điểm số nguyên dương nhãn điểm đó: - Trên đường thẳng a, điểm thứ i (theo thứ tự từ trái qua phải) gán nhãn - Trên đường thẳng b, điểm thứ j (Theo thứ tự từ trái qua phải) gán nhãn bj Ở (a1, a2,…,an) (b1, b2,…,bn) hoán vị dãy số (1, 2,…,n) Yêu cầu: Hãy số tối đa đoạn thẳng thỏa mãn: - Mỗi đoạn thẳng phải nối hai điểm có nhãn: Một điểm đường thẳng a điểm đường thẳng b - Các đoạn thẳng đơi khơng có điểm chung Dữ liệu: Vào từ tệp văn LINES.INP - Dòng 1: chứa số nguyên dương n ≤ 105 - Dòng 2: chứa n số theo thứ tự a1, a2,…,an - Dòng 3: Chứa n số theo thứ tự b1, b2,…,bn Kết quả: Ghi tệp văn LINES.OUT - Ghi số k số đoạn thẳng nối Ví dụ: LINES.INP LINES.OUT 231564 325614 Hướng dẫn thuật toán: Thuật toán QHD + điều kiện hai đoạn thẳng không cắt Test+code: https://www.dropbox.com/s/5we9xw4jdt078cf/Lines.rar?dl=0 Bài Dịch chuyển điểm (Paralelogrami) (nguồn: COCI 2016/2017) Gần đây, trò chơi máy tính xuất hiện, gọi “Parallelograms” Khi trò chơi bắt đầu, máy tính vẽ N điểm hình tọa độ điểm số nguyên năm phạm vi -10 đế 10 Chi có di chuyên game thực lấy ba điểm không thẳng hang A, B C, thay điểm C điểm D cho ABCD hình bình hành đường chéo AB Chú ý điểm D tồn Khi bắt đầu trò chơi, tất điểm khác nhau, trình chơi phép xảy hai hay nhiều hay nhiều hai điểm có tọa đồ trùng Thêm điểm tạo tọa độ phải thỏa mãn có gia trị tuyệt đối nhỏ Mục tiêu trò chơi dùng dãy di chuyển, di chuyển tất điểm vào góc phần tư thứ Một cách chi tiết hơn, kết thúc trò chơi, tất điểm phải có tọa độ khơng âm Tìm dãy di chuyển (không vượt 2500 di chuyển), cho di chuyển tất điểm vào góc phần từ thứ nhất, xác định dãy di chuyên không tồn Dữ liệu: - Dòng ghí số ngun dương N , điểm cho trước - N dòng dòng ghi tọa độ điểm thứ i, Sao cho, hai điểm khơng trung Kết quả: - Nếu khơng tồn ghi -1 - Nếu tồn dãy dị chuyển dòng ghi số nguyên M số bước di - chuyển Mỗi dòng M dòng phải ghi ba nguyên khác A, B, C () chi số điểm liên quan phép di chuyển Trong C số điểm thay đổi, điểm với số A, B không thay đổi Ví dụ: Input 00 40 -1 Output 123 Input 50 05 -2 -2 -3 Output 123 124 Input -1 -1 -2 -2 -3 -3 Output -1 Hướng dẫn thuật toán: - Nếu tất điểm thẳng hàng, khơng thể tồn tài phép di chuyển nào, - không tồn phép di chuyển Kết đưa -1 Trước tiên, Chú ý phép toán thay điểm C thành điểm D cho ABCD hình bình hành đường chéo AB thay phép toán đại số sau: - Giả sử có ba điểm khơng thẳng hàng Chúng ta chứng chúng có - - thể di chuyển chúng vào phần mặt phẳng mà đảm bảo tọa độ nhỏ Và điểm N-3 điểm lại di chuyển vào góc phần tư thứ xác phép di chuyển Nếu ba điểm không thẳng hàng, chứng minh di chuyển chúng vào phần nói mặt phẳng Cho ba điểm A, B C cho D điểm tao phép ánh xạ Bây chúng có hình bình hành ABCD Chú ý rằng, cách dùng hình bình hành này, lát mặt phẳng theo cách hình vẽ Cũng ý rằng, với hình bình hành sử dụng để lát mặt phẳng, có dãy phép toán biến ba điểm thành ba đỉnh hình bình hành Vì hình bình hành lát tồn mặt phẳng, lát góc phần từ mà đảm bảo tọa độ nhỏ Do đó, phải tồn hình bình hành mà đặt chọn vẹn góc phần tư dãy phép tốn cho biến điểm thành ba điểm góc phân từ - Câu hỏi lại có phép di chuyển thực - Chúng ta thực thuật toán BFS với trang thái ba điểm xét đến, phép - biến đổi áp dụng ba phép tốn trạng thái Chúng ta hạn chế BFS không loang vào tam giác mà không giao với phần mặt phẳng , biết lời giải tồn không loang vào tam giác Các tọa độ nhỏ dùng vét cạn Chúng ta kí hiệu A, B, C ba đỉnh tam giác Chú ý tồn đỉnh tam giác, khơng tính tổng qt, giả sử đỉnh C, cho phần mặt phẳng giới hạn CA CB phần mặt phẳng mn di chuyển ba điểm vào Chúng ta ánh xạ điểm C qua đường thằng AB Test+Code: https://www.dropbox.com/s/3y4xw7orcnd1mzi/Paralelogrami.rar?dl=0 Bài 8: Cặp điểm gần (NEAREST) (nguồn: SPOJ) - Cho n (2 b Xét A,B,C,D( với C,D đầu mút cạnh đa giác) Do biết AB có phần cạnh chung đầu mút Phần độ dài chung (hay phần CD chứa AB) có đầu mút điểm nằm điểm A,B,C,D Mà A,B,C,D thuộc đường thằng => so sánh / sort theo x y, dễ dàng tìm điểm (Trường hợp hai đoạn AB,CD chung đầu mút, điểm nằm trùng => kết 0) Trường hợp & 3: Tìm giao điểm (AB) với cạnh đa giác cách lập phương trình đường thẳng chứa cạnh Dễ dàng tìm cách giải hệ phương trình ẩn Nếu phương trình vơ nghiệm => (AB) khơng cắt cạnh Nếu phương trình có vơ số nghiệm => Trường hợp Nếu phương trình có nghiệm => Giao điểm (AB) đường thẳng chứa cạnh Kiểm tra cạnh có chứa giao điểm hay khơng Chú ý trường hợp (AB) cắt cạnh đỉnh => lấy giao điểm trùng Dùng biến đánh dấu để tránh lấy lặp giao điểm Khi tìm giao điểm => có khả năng: AB nằm ngồi đa giác => cần kiểm tra giao điểm có nằm AB AB có phần độ dài nằm đa giác (Khi tính L tương tự trường hợp với C,D giao điểm) Trường hợp 4: (AB) khơng cắt đa giác => AB khơng có phần nằm đa giác => L=0; Chương trình: Chuẩn bị hàm kiểm tra điểm có nằm đoạn thẳng Chạy vòng for(1->n) xét đường thẳng chứa cạnh với đỉnh i,i+1 làm đầu mút (do đề cho đỉnh theo chiều kim đồng hồ nên gán đỉnh n+1=đỉnh 1) , tìm giao điểm Trường hợp 1,2,3; Nếu khơng tìm thấy => Trường hợp Trả kết L Test+code: https://www.dropbox.com/s/fxh739id7km4msg/Poly.rar?dl=0 Bài 11: Robot (nguồn: sưu tầm) Cho lưới nguyên Oxy Điểm nguyên điểm nguyên gọi kề với thỏa mãn Một robot ban đầu đứng gốc tọa độ Ở bước, robot di chuyển sang điểm nguyên kề với vị trí Từ bước di chuyển thứ hai trở đi, robot hướng cũ, rẽ sang trái, rẽ sang phải, hay trở vị trí trước Ví dụ từ robot đến rẽ trái sang ô , rẽ phải sang ô , rẽ phải sang ô rẽ trái sang cuối rẽ phải sang Yêu cầu: Cho tọa độ điểm nguyên mà robot qua Hãy đếm xem robot rẽ phải lần, rẽ trái bao nhiều lần? Dữ liệu: - Dòng chứa số nguyên dương n tổng số điểm nguyên mà robot qua (kể vị trí xuất phát gốc tọa độ), - Dòng thứ n dòng chứa hai số nguyên tọa độ điểm nguyên mà Kết quả: robot qua Các số dòng ghi cách khoảng trắng - Gồm dòng chứa hai số nguyên số lần robot rẽ phải số lần robot rẽ trái Ví dụ: ROBOT.INP 1 2 3 ROBOT.OUT 0 1 0 -1 Hướng dẫn thuật toán: - Để giải tập này, trước hết ta cần phải xác định yếu tố để xác định xem robot rẽ trái, rẽ phải hay thẳng - Nhận thấy, với vị trí liên tiếp đường đi, dễ dàng xác định xem hướng đường cách dùng tọa độ vị trí x[i] – x[i - 2] = x[i] – x[i - 2] = -1 x[i] – x[i - 2] = x[i] – x[i - 2] = -1 y[i] – y[i – 2] = y[i] – y[i – 2] = y[i] – y[i – 2] = -1 y[i] – y[i – 2] = -1 x[i] = x[i – 1] L R R L y[i] = y[i – 1] R L L R Test+code: https://www.dropbox.com/s/60utckb7sriqafd/Robot.rar?dl=0 Bài 12: Land (nguồn: sưu tầm) Một khu đất kích thước Theo quy hoạch ban đầu, khu đất xây dựng khu vui chơi, khu vui chơi thứ khu vực với kích thước Tuy nhiên, vấn đề phát sinh, người ta muốn quy hoạch lại để có thêm khu vui chơi có dạng hình vng hình vng có diện tích lớn tốt Các khu vui chơi xây dựng tiếp xúc với không giao Yêu cầu: Cho khu vui chơi, tính diện tích khu đất hình vng lớn tìm Dữ liệu: - Dòng đầu ghi số nguyên - dòng sau, dòng ghi hai số nguyên Kết quả: - Gồm dòng ghi số ngun diện tích khu đất hình vng lớn tìm Ví dụ: LAND.INP LAND.OUT 552 15 14 16 Hướng dẫn thuật toán: Nhận xét : Xếp k hình chữ nhật A * B vào hình chữ nhật kích thước M * N để khoảng trống chứa hình vng kích thước lớn Gọi hình vng có kích thước R * R Do ta xếp hình vng kích thước R * R k hình chữ nhật A * B vào hình chữ nhật kích thước M * N Thuật toán: Sử dụng thuật toán Backtrack để xếp k + hình chữ nhật vào hình chữ nhật kích thước M * N Do hình chữ nhật quay 90˚ nên ta backtrack 0, với k hình chữ nhật (0: giữ nguyên kích thước A * B; : đổi thành kích thước B * A) Với trạng thái k hình chữ nhật, ta thêm hình vng kích thước val * val vào đầu mảng k hình Sử dụng backtrack để xếp k + hình Try(int x, int val) : xếp hình thứ x k + hình kích thước hình vuông val * val Các cận để giảm thời gian: dùng tknp để tính val với left = ans + 1, right = max_val (max_val : kích thước hình vng lớn thêm) Sort k hình chữ nhật theo diện tích giảm dần Kết tốn : ans * ans Test+code: https://www.dropbox.com/s/zay4wuwvzb1rw0c/Land.rar?dl=0 C – KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN: Kết luận: Chuyên đề trình bày số tốn hình học tin học áp dụng giải tập tiêu biểu liên quan Những tập chuyên đề sưu tầm lựa chọn nhiều nguồn liệu khác Chuyên đề sử dụng trình giảng dạy học sinh đội tuyển Kết thu học sinh có cài nhìn tổng quan năm vững tốn hình học tin học từ làm tảng cho việc giải tốn khó Hướng phát triển: Mặc dù cố gắng thời gian có hạn nên số lượng tập, hướng dẫn giải test kèm theo hạn chế Vì thời gian tới Tơi tiếp tục phát triển chuyên đề theo hướng hệ thống tập theo chủ đề liên quan đến toán Đồng thời mong đóng góp ý kiến q Thầy Cơ để chuyên đề ngày hoàn thiện ... viết đề tài với mục tiêu cung cấp đến người đọc tốn hình học tin học với phần cài đặt ngôn ngữ C++ Trong nội dung đề tài trao đổi với thầy cô tính tốn hình học tin Ứng dụng giải số tốn hình học. .. giải tốn tin học có sử dụng kiến thức hình học, phát triển tư lơgic cho học sinh đồng thời nâng cao khả tự học học sinh, tạo hứng thú học tập môn Tin học III IV Thời gian địa điểm: suốt năm học, ... biều Các tốn có đề bài, hướng dẫn giải, code test II Mục đích đề tài Nghiên cứu đề tài: “Một số tốn hình học Tin học ứng dụng” nhằm giúp học sinh tiếp cận, làm quen giải tốn hình học lập trình

Ngày đăng: 11/03/2020, 03:46

Từ khóa liên quan

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

Tài liệu liên quan