Download đề và đáp án thi học sinh giỏi lớp 11 môn tin học 2010 2011 tỉnh quảng bình

6 373 8
Download đề và đáp án thi học sinh giỏi lớp 11 môn tin học 2010 2011 tỉnh quảng bình

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

Thông tin tài liệu

Së GD&§T Qu¶ng b×nh kú thi CHäN häc sinh giái cÊp tØnh líp 11 THPT n¨m häc 2010 - 2011 M«n thi: tin häc híng dÉn chÊm I- Phương pháp: - Giám khảo tạo bộ dữ liệu vào, tính toán kết quả. Thực hiện chương trình của học sinh và so sánh kết quả. - Giám khảo có thể sử dụng chương trình gợi ý dưới đây để tính toán kết quả của dữ liệu vào. - Chương trình học sinh đúng một bộ test, giám khảo cho 0,5 điểm. Như vậy, nếu một câu có 3 điểm thì giám khảo phải tạo 6 bộ test. - Với mỗi câu, giám khảo phải tạo được một bộ test có không gian dữ liệu lớn. - Đối với Câu 3 giám khảo phải tạo được 3 Test có M ≥ 60000 và N ≥ 70 và chấm thời gian thực hiện chương trình của học sinh. Bài ni nói ngắn gọn là tìm diện tích lớn nhất của các hình chữ nhật có giá trị trong ô bằng nhau. Cách giải cho test nhỏ nì! Sử dụng mảng A để lưu dữ liệu vào Sử dụng 2 mảng 2 chiều: dong và cot Dong để tính tổng các ô bằng nhau trên một dòng Cot để tính tổng các ô bằng nhau trên một cột (Tạm diễn đạt vậy đã, chưa hiểu thì tạm chấp nhận) dong[i,j] = dong[i,j-1]+ 1 nếu a[i,j]=a[i,j-1] Ví dụ, với i:=1 dong[1,j] = dong[1,j-1]+1 nếu a[1,j]=a[1,j-1] Với test vào A như trên ta có mảng dong nì: 1 1 1 1 1 1 1 2 3 1 1 1 2 3 1 1 1 2 1 2 cot[i,j] = cot[i-1,j]+ 1 nếu a[i,j]=a[i-1,j] Ví dụ, với j:=1 cot[i,1] = cot[i-1,1]+1 nếu a[i,1]=a[i-1,1] Với test vào A như trên ta có mảng cot nì: 1 1 1 1 1 1 2 1 1 1 1 3 2 2 2 2 1 1 3 1 Sau đó chỉ cần tìm max của tích dong[i,j]*cot[i,j] là được thôi mà! 1/3 Để giải được cho bộ dữ liệu vào lớn như vậy, ta không thể sử dụng mảng hai chiều để lưu được! Vì vậy phải vừa lưu vừa xử lý Đó là tư tưởng của thuật toán trong HDC đó! Nếu ta sử dụng hai biên mảng DONG và COT thì không đủ bộ nhớ lưu trữ. Bây chừ ta tìm cách để giảm biến mảng hè! Giả sử ta phải lưu biến DONG mà không lưu biến COT có được không! Giải quyết như thế nào! Rõ ràng ta có thể không cần mảng COT nữa. Khi đó. Nếu A[i,j] a[i-1,j] (nếu hai phần tử liên tiếp trên 1 cột khác nhau) ddc:=1 Nếu A[i,j] = a[i-1,j] (nếu hai phần tử liên tiếp trên 1 cột bằng nhau) ddc:=ddc+1. Nếu dientich= COT[2,J] thì ta lùi J-1 đơn vị để xét ô bên trái của ô [2,J1] Giới hạn để dừng lùi là COT[2,J-1] < COT[2,J]. Giả sử mảng A chỉ có một dòng. Khi đó để tìm HCN có diện tích lớn nhất như sau Tại vị trí I ta xét sang phải, While A[i]=A[i+1] do S:=S+1 Nếu SMax=H[i]) do Left:=Left-1; Right:=i; While (B[Right+1] = B[i]) And (H[Right+1]>=H[i]) do Right:=Right+1; if (Right - Left + 1)*H[i] > S then S:=(Right - Left + 1)*H[i]; End; End; Procedure Solve; Var i:Longint; Begin For i:=1 to M do Begin Read_Data; Area; End; Close(f); End; Procedure Write_Data; Var g:Text; Begin Assign(g,fo); Rewrite(g); Writeln(g,S); Close(g); End; BEGIN Init; Solve; Write_Data; END. 6/3 ... Dòng là: 111 11 12345 112 31 111 11 mảng cột la: 111 11 1 2112 13221 2 4112 Tổng kết: 1- Khi đọc đề thi mà họ viết ”loằng ngằng” đề kia, ta pahỉ tìm mô hình toán đó! Mô hình cối lõi, chất toán! 2- Thường... 2- Thường có hai dạng toán khó: a) Dạng 1: Không gian liệu lớn, đòi hỏi cấu trúc liệu lưu trữ lớn! b) Dạng 2: Số phép tính cần thực lớn (giải toán cần phải giải nhiều toán con) 3- Cách giải a)... ”Vừa đọc liệu, vừa xử lý” Đương nhiên, số phép toán bị tăng lên Dạng 2: Tìm cách lưu trữ kết trung gian 2/3 2- Trong số toán, ta nên giải thuận toán đơn giản Khi cấu trúc liệu cần lưu trữ lớn!

Ngày đăng: 13/10/2015, 16:15

Từ khóa liên quan

Mục lục

  • I- Phương pháp:

  • Bài ni nói ngắn gọn là tìm diện tích lớn nhất của các hình chữ nhật có giá trị trong ô bằng nhau.

  • Cách giải cho test nhỏ nì!

  • Sử dụng mảng A để lưu dữ liệu vào

  • Sử dụng 2 mảng 2 chiều: dong và cot

  • Dong để tính tổng các ô bằng nhau trên một dòng

  • Cot để tính tổng các ô bằng nhau trên một cột

  • (Tạm diễn đạt vậy đã, chưa hiểu thì tạm chấp nhận)

  • dong[i,j] = dong[i,j-1]+ 1 nếu a[i,j]=a[i,j-1]

  • Ví dụ, với i:=1

  • dong[1,j] = dong[1,j-1]+1 nếu a[1,j]=a[1,j-1]

  • Với test vào A như trên ta có mảng dong nì:

  • 1 1 1 1 1

  • 1 1 2 3 1

  • 1 1 2 3 1

  • 1 1 2 1 2

  • cot[i,j] = cot[i-1,j]+ 1 nếu a[i,j]=a[i-1,j]

  • Ví dụ, với j:=1

  • cot[i,1] = cot[i-1,1]+1 nếu a[i,1]=a[i-1,1]

  • Với test vào A như trên ta có mảng cot nì:

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

Tài liệu liên quan