SỞ GIÁO DỤC VÀ ĐÀO TẠO QUẢNG NGÃI TRƯỜNG THPT CHUYÊN LÊ KHIẾT ĐỀ ĐỀ XUẤT (Đề thi gồm 04 trang) KỲ THI HỌC SINH GIỎI CÁC TRƯỜNG THPT CHUYÊN KHU VỰC DUYÊN HẢI VÀ ĐỒNG BẰNG BẮC BỘ LẦN THỨ XIII, NĂM 2022 ĐỀ THI MÔN: TIN HỌC 11 Thời gian: 180 phút (Không kể thời gian giao đề HƯỚNG DẪN CHẤM TỔNG QUAN BÀI THI Lập trình giải toán sau: Tên Bài Bài Bài File chương trình File liệu vào File kết HEIGHT.* HEIGHT.INP HEIGHT.OUT SAFEGUARD.* SAFEGUARD.INP SAFEGUARD S.OUT ELECTRIC.* ELECTRIC.INP ELECTRIC.OUT Dấu * thay PAS CPP ngơn ngữ lập trình sử dụng tương ứng Pascal C++ Yêu cầu: - Tên tệp phải đặt với yêu cầu thực chấm; - Giám khảo sử dụng test đề xuất để chấm thi thí sinh; - Giám khảo chấm tay trực tiếp sử dụng phần mềm chấm tự động Bài Mã HEIGHT (6 điểm) Hướng dẫn thuật toán: Gọi dp1[i] số lượng học sinh bên trái i có chiều cao h i mà học sinh thứ i nhìn thấy Gọi dp2[i] số lượng học sinh bên phải i có chiều cao h i mà học sinh thứ i nhìn thấy Gọi dp[i] số lượng học sinh có chiều cao h i mà học sinh thứ i nhìn thấy Kết tốn dp[i]=dp1[i]+dp2[i]; Để tính dp1[i] : - Gọi L[i] thứ tự học sinh gần bên trái học sinh i có chiều cao lớn hi - Ta có cơng thức QHĐ: dp1[i]=dp[L[i]]+1 h[i]==h[L[i]; ngược lại dp1[i]=0 Để tính dp2[i] : - Gọi R[i] thứ tự học sinh gần bên phải học sinh i có chiều cao lớn hi - Ta có cơng thức QHĐ: dp2[i]=dp[R[i]]+1 h[i]==h[R[i];ngược lại dp2[i]=0; Subtask 1: (40% số điểm) với n≤103 Với học sinh i Duyệt vị trí để tìm L[i]; R[i]; ĐPT O(q*n*n) Subtask 2: (60% số điểm) 103< n≤105 Dùng deque để tìm L[i]; R[i]; ĐPT O(q*n); Bài 2: mã SAFEGUARD ( điểm) Con gà an tồn nằm bao lồi chó Tìm bao lồi chó thuật tốn Graham Scan (sort) Subtask 1: Duyệt tìm điểm E F mà vector AE AF “kẹp” vector AM vào Subtask 2: Dùng thuật tốn Binary Search tìm điểm E & F mà vector AE AF “kẹp” vector AM vào Xét tam giác AEF, M nằm Bài 3: Mã bài: ELECTRIC (7 điểm) Subtask 1+ 2: Ta xem đặt trạm điện thành phố A, xây dựng đường dây điện nối với chi phí Ta bổ sung thêm cạnh vào đồ thị dùng thuật tốn Kruskal tìm khung cực tiểu đồ thị có M + cạnh ĐPT: O(QM log(N + M)) Subtask 3+4: Khi bổ sung cạnh có trọng số hai đỉnh A B, cạnh chắn nằm khung tối thiểu Khi đó, đường A B T cạnh tạo thành chu trình Do thuật tốn Kruskal xét cạnh theo trọng số từ nhỏ đến lớn, cạnh có trọng số lớn đường A B bị bỏ khỏi khung cực tiểu Do đó, gọi W tổng trọng số cạnh T, maxW(u,v) cạnh có trọng số lớn đường u v T Khi đó, với truy ván i, đáp án W − maxW(Ai,Bi) Đến đây, ta có lời giải độ phức tạp O(M log(N + M) + QN), đủ để vượt qua subtask Để trọn vẹn điểm này, ta cần thực việc tính tốn trước maxW(u,v) với cặp (u,v) O(N2) cách DFS từ đỉnh Khi đó, truy vấn trả lời O(1) Độ phức tạp: O(M log(N + M) + N2 + Q) Người đề Phan Thị Kiều Uyên 0347899254 ... toàn nằm bao lồi chó Tìm bao lồi chó thuật tốn Graham Scan (sort) Subtask 1: Duyệt tìm điểm E F mà vector AE AF “kẹp” vector AM vào Subtask 2: Dùng thuật toán Binary Search tìm điểm E & F mà... hai đỉnh A B, cạnh chắn nằm khung tối thiểu Khi đó, đường A B T cạnh tạo thành chu trình Do thuật toán Kruskal xét cạnh theo trọng số từ nhỏ đến lớn, cạnh có trọng số lớn đường A B bị bỏ khỏi... điện thành phố A, xây dựng đường dây điện nối với chi phí Ta bổ sung thêm cạnh vào đồ thị dùng thuật tốn Kruskal tìm khung cực tiểu đồ thị có M + cạnh ĐPT: O(QM log(N + M)) Subtask 3+4: Khi bổ