1. Trang chủ
  2. » Giáo án - Bài giảng

HDC de de xuat duyen hai 2022(1)

3 11 0

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 3
Dung lượng 26,79 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

TRƯỜNG THPT CHUYÊN KỲ THI HSG CÁC TRƯỜNG THPT CHUYÊNThời gian 180 phút không kể thời gian phát đề Ngày thi: 14/7/2022 HƯỚNG DẪN THUẬT TOÁN Bài 1.. Xếp đội hình 7.0 điểm Subtask 1: Sinh t

Trang 1

TRƯỜNG THPT CHUYÊN KỲ THI HSG CÁC TRƯỜNG THPT CHUYÊN

Thời gian 180 phút (không kể thời gian phát đề)

Ngày thi: 14/7/2022

HƯỚNG DẪN THUẬT TOÁN

Bài 1 Bộ chữ CVA (6.0 điểm)

Subtask 1,2: Duyệt với 3 vòng for để đếm ĐPT O(n3)

Subtask 3,4:

Với mỗi giá trị i mà s[i] = 'V', ta xem thử trước i có bao nhiêu chữ cái 'C' (lưu vào biến c), và bao nhiêu chữ cái 'A' sau i (lưu vào biến a) Khi đó, số bộ CVA mà chữ V tại vị trí s[i] là a*c, ta cộng dồn vào biến đếm

ĐPT O(n)

Bài 2 Xếp đội hình (7.0 điểm)

Subtask 1: Sinh từng cách xếp vị trí khác nhau và đối chiếu với vị trí ban đầu xem khác biệt bao nhiêu vị trí và chọn trường hợp ít nhất

Subtask 2: Chỉ có 2 cách sắp xếp:

Cách 1: 10101010….10

Cách 2: 01010101….01

So sánh mỗi cách với trạng thái ban đầu xem thử trường hợp nào có số vị trí trùng nhiều hơn (tức là đổi chỗ ít hơn)

Subtask 3: Gọi k là số chữ số 1 Bài toán tương đương với tìm xâu nhị phân độ dài n và

có k chữ số 1, không có 2 chữ số 1 gần nhau mà có số vị trí trùng với xâu s ban đầu nhiều nhất

Nếu 2k>n thì không có đáp án (viết -1)

Trong các xâu nhị phân độ dài i, có j kí tự 1, không có 2 kí tự 1 cạnh nhau, kí tự cuối cùng là t (t=0 hoặc 1), ta chọn xâu có nhiều vị trí trùng với xâu s[1 i] nhất Gọi F[i][j][t]

là số vị trí trùng nhiều nhất đó

Trang 2

F[1][0][0] = 1 nếu s[1]='0';

F[1][0][1] = 1 nếu s[1]='1';

Nếu s[i]='0' thì:

 F[i][j][0]=max(F[i-1][j][0], F[i-1][j][1])+1;

 F[i][j][1]=F[i-1][j-1][0];

Nếu s[i]='1' thì:

 F[i][j][0]=max(F[i-1][j][0], F[i-1][j][1]);

 F[i][j][1]=F[i-1][j-1][0]+1;

Nếu F[n][k][1]>F[n][k][0] thì:

 Lần ngược để tìm xâu kết quả x;

 Nếu x[1]='0' thì T = F[n][k][1];

 Nếu x[1] ≠ '0' thì T = F[n][k][0];

Nếu F[n][k][1] ≤ F[n][k][0] thì T = F[n][k][0];

Viết (n-T)/2

ĐPT O(n2)

Bài 3 Trò chơi (7.0 điểm)

Subtask 1: Dùng kĩ thuật DFS

Subtask 2: Dùng kĩ thuật BFS

Gọi (x,y) là trạng thái can 1 có x lít, can 2 có y lít

Từ trạng thái (x,y), với 1 lần đong nước, ta có thể chuyển sang 6 trạng thái (0,y), (a, y), (0, x+y) hoặc (x+y-b, b) hoặc

(x,0), (x, b), (x+y, 0) hoặc (a, x+y-a);

Mảng D[x][y] là số bước ít nhất để đạt đến trạng thái (x,y)

D[][]=∞ hết, riêng D[0][0]=0;

Đưa (0,0) vào queue Q;

Trong khi Q không rỗng:

 Lấy trạng thái (x,y) ra khỏi Q;

 t = D[x][y];

 Nếu x=c hoặc y=c hoặc x+y=c thì viết t và kết thúc

 Nếu D[0][y] = ∞ thì thêm (0,y) vào Q và D[0][y]=t+1;

 Nếu D[a][y] = ∞ thì thêm (a,y) vào Q và D[a][y]=t+1;

 Nếu x+y ≤ b thì:

oNếu D[0][x+y] = ∞ thì thêm (0,x+y) vào Q và D[0][x+y]=t+1;

 Nếu x+y > b thì:

Trang 3

oNếu D [x+y-b] [b] = ∞ thì thêm (x+y-b,b) vào Q và D[x+y-b][b]=t+1;

 Nếu D[x][0] = ∞ thì thêm (x,0) vào Q và D[x][0]=t+1;

 Nếu D[x][b] = ∞ thì thêm (x,b) vào Q và D[x][b]=t+1;

 Nếu x+y ≤ a thì:

oNếu D [x+y][0] = ∞ thì thêm (x+y,0) vào Q và D[x+y][0]=t+1;

 Nếu x+y > a thì:

oNếu D[a][x+y-a] = ∞ thì thêm (a,x+y-a) vào Q và D[a][x+y-a] =t+1; Cuối cùng, viết -1

Giáo viên HD: Trần Hữu Nam

SĐT: 0969 156 825

Ngày đăng: 20/10/2022, 23:08

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w