Kho đề thi
Học sinh giỏi

Duyên hải Bắc Bộ 2025 - Khối 10

HSG / Olympic Tin học cấp THPT — https://oj.clue.edu.vn/exams/dhbb25-10/

Cấu trúc đề và tiến độ

Đang tải tiến độ…

  • 1
    Câu 1 — Ước chung

    nâng cao

    Bộ chấm C++ đã qua kiểm chứng Linux: lời giải chạy 3 lần, 3 lời giải sai bị bắt. Chưa xác nhận AC trên OJ gốc.

    chưa có điểm
  • 2
    Câu 2 — Sao chép ảnh

    nâng cao

    Bộ chấm C++ đã qua kiểm chứng Linux: lời giải chạy 3 lần, 3 lời giải sai bị bắt. Chưa xác nhận AC trên OJ gốc.

    chưa có điểm
  • 3
    Câu 3 — Di chuyển robot

    cơ bản

    Chưa xác minh thời gian chạy trên toàn miền

    chưa mở chấm

Duyên hải Bắc Bộ 2025 - Khối 10

Nguồn: ClueOJ statement pages printed to PDF and merged in exam order; not an original scan
Chuyển nhập/xuất tệp sang stdin/stdout khi chạy trên website.

Câu 1. Ước chung

Khi giảng dạy về nội dung ước số chung lớn nhất, Alice đã cho học sinh bài toán sau:

Cho n số nguyên dương a1, a2, ..., an. Hãy chọn ra nhiều số nhất mà ước chung lớn nhất của chúng lớn hơn 1.

Ví dụ, với dãy số gồm bốn số 4, 5, 8, 20, có thể chọn được nhiều nhất ba số, chọn các số 4, 8, 20 có ước chung lớn nhất là 4.

Yêu cầu: Cho n số nguyên dương a1, a2, ..., an. Hãy tính số lượng số nhiều nhất chọn được thỏa mãn điều kiện bài toán.

Input

  • Dòng đầu chứa số nguyên dương n (n ≤ 1000).
  • Dòng thứ hai chứa n số nguyên dương a1, a2, ..., an (ai ≤ 1018).

Output

  • Ghi ra một số nguyên là số lượng số chọn được.

Sample Input 1

4
5 8 4 20

Sample Output 1

3

Sample Input 2

4
2 4 6 8

Sample Output 2

4

Subtasks

  • Subtask 1 (20 %): n = 2 và ai ≤ 106.
  • Subtask 2 (30 %): n ≤ 18.
  • Subtask 3 (30 %): ai ≤ 106.
  • Subtask 4 (20 %): Không có ràng buộc nào thêm.

---

Ghi chú về bản chuyển thể

Nhập từ stdin và in ra stdout, không cần tạo tệp .INP/.OUT.

Trạng thái lời giải: C++ đã qua bộ kiểm thử cục bộ; chưa xác nhận AC trên OJ.

Câu 2. Sao chép ảnh

Trong buổi họp lớp, Alice đã chụp được n bức ảnh, các bức ảnh được đánh số từ 1 đến n. Bức ảnh thứ i (1 ≤ i ≤ n) có kích thước si. Có m bạn trong lớp muốn nhờ Alice sao chép các bức ảnh, bạn thứ k (1 ≤ k ≤ m) sẽ đưa cho Alice hai ổ đĩa, ổ đĩa thứ nhất có sức chứa ak, ổ đĩa thứ hai có sức chứa bk và một danh sách Lk là các bức ảnh không cần sao chép. Bạn thứ k mong muốn có thể sao chép được nhiều bức ảnh nhất vào hai ổ đĩa gồm các bức ảnh không thuộc danh sách Lk. Alice không chắc chắn có thể sao chép được tối đa các bức ảnh theo cách tối ưu. Tuy nhiên, bạn thứ k vẫn vui vẻ nếu số lượng bức ảnh sao chép được không ít hơn (gk - 1), trong đó gk là số lượng tối đa các bức ảnh có thể sao chép được theo cách tối ưu.

Yêu cầu: Hãy giúp Alice đưa ra kế hoạch sao chép các bức ảnh cho các bạn. Giả sử tk là số lượng bức ảnh mà Alice có thể sao chép cho bạn thứ k (1 ≤ k ≤ m), giá trị này được chấp nhận nếu (gk - 1) ≤ tk ≤ gk.

Input

  • Dòng đầu chứa hai số nguyên dương n, m (n, m ≤ 105);
  • Dòng thứ hai chứa n số nguyên dương s1, s2, ..., sn (si ≤ 109);
  • Dòng thứ k (1 ≤ k ≤ m) trong m dòng sau, mỗi dòng có dạng:Hai số đầu tiên là ak, bk (ak, bk ≤ 109);Số thứ ba là số |Lk| là số bức ảnh mà bạn k không thích;Tiếp theo là |Lk| số là chỉ số các bức ảnh thuộc danh sách Lk.

Tổng số lượng phần tử trong m danh sách không vượt quá 105 (∑k=1m |Lk| ≤ 105).

Output

  • Dòng đầu chứa số nguyên t1 là số bức ảnh có thể sao chép cho bạn thứ nhất;
  • Dòng thứ hai là một xâu độ dài n chỉ gồm các kí tự '0', '1', '2' mô tả cách sao chép các bức ảnh cho bạn thứ nhất, trong đó kí tự thứ i (1 ≤ i ≤ n) bằng '0' cho biết bức ảnh thứ i không được sao chép, bằng '1' hoặc '2' cho biết bức ảnh thứ i được sao chép vào đĩa 1 hoặc đĩa 2;
  • Do dữ liệu ghi ra quá lớn nên với các bạn còn lại chỉ cần đưa ra số lượng bức ảnh có thể sao chép được. Cụ thể, dòng thứ ba chứa m - 1 số t2, t3, ..., tm.

Sample Input

6 3
2 1 1 3 4 1
5 5 0
5 5 2 2 6
5 7 0

Sample Output

5
111022
4 5

Giải thích

  • Với bạn thứ 1, tối đa các bức ảnh có thể sao chép được là 5 (ví dụ, đĩa 1 chứa bức ảnh 1, 2, 3; đĩa 2 chứa bức ảnh 5, 6). Kết quả đưa ra bằng 4 hoặc 5 đều được chấp nhận.
  • Với bạn thứ 2, tối đa các bức ảnh có thể sao chép được là 4 (ví dụ, đĩa 1 chứa bức ảnh 1, 4; đĩa 2 chứa bức ảnh 3, 5). Kết quả đưa ra bằng 3 hoặc 4 đều được chấp nhận.
  • Với bạn thứ 3, tối đa các bức ảnh có thể sao chép được là 6 (ví dụ, đĩa 1 chứa bức ảnh 1, 4; đĩa 2 chứa bức ảnh 2, 3, 5, 6). Kết quả đưa ra bằng 5 hoặc 6 đều được chấp nhận.

Subtasks

SubtaskĐiểmRàng buộc
125n ≤ 10; m ≤ 3; ak, bk ≤ 1000; Lk = 0.
225n ≤ 50; m ≤ 3; ak, bk ≤ 1000.
325Lk = 0.
425Không có ràng buộc nào thêm.

---

Ghi chú về bản chuyển thể

Nhập từ stdin và in ra stdout, không cần tạo tệp .INP/.OUT.

Trạng thái lời giải: C++ đã qua bộ kiểm thử cục bộ; chưa xác nhận AC trên OJ.

Câu 3. Di chuyển robot

Alice thiết kế trò chơi điều khiển robot như sau: Một robot đặt trên một sân được biểu diễn như một lưới ô vuông kích thước n × m. Các dòng được đánh số từ 0 đến n - 1, các cột được đánh số từ 0 đến m - 1. Ô nằm giao giữa hàng i cột j được gọi là ô (i, j), một số ô của lưới là tường, các ô còn lại là ô tự do. Người chơi điều khiển robot bằng bốn loại lệnh: U, D, L, R, giả sử robot đang đứng tại ô (x, y), robot sẽ di chuyển tương ứng như sau:

  • Lệnh U: Nếu x = 0 hoặc (x - 1, y) là tường, robot sẽ không di chuyển. Ngược lại, robot sẽ di chuyển đến (x - 1, y).
  • Lệnh D: Nếu x = n - 1 hoặc (x + 1, y) là tường, robot sẽ không di chuyển. Ngược lại, robot sẽ di chuyển đến (x + 1, y).
  • Lệnh L: Nếu y = 0 hoặc (x, y - 1) là tường, robot sẽ không di chuyển. Ngược lại, robot sẽ di chuyển đến (x, y - 1).
  • Lệnh R: Nếu y = m - 1 hoặc (x, y + 1) là tường, robot sẽ không di chuyển. Ngược lại, robot sẽ di chuyển đến (x, y + 1).

Người chơi không được biết chính xác vị trí ban đầu của robot, chỉ biết rằng robot có thể đang ở một trong k ô tự do (u1, v1), (u2, v2), ..., (uk, vk).

Yêu cầu: Hãy tìm một dãy lệnh điều khiển robot để robot luôn kết thúc tại vị trí (0, 0).

Input

  • Dòng đầu chứa ba số nguyên dương n, m, k (n, m ≤ 200; k ≤ 10);
  • Dòng thứ i trong n dòng tiếp theo chứa m số mô tả lưới, số thứ j bằng 0 (hoặc 1) tương ứng ô (i, j) là không có tường (hoặc có tường);
  • Dòng thứ t trong k dòng tiếp theo, mỗi dòng chứa hai số ut, vt.

Dữ liệu đảm bảo bài toán luôn có cách di chuyển thỏa mãn.

Output

Ghi ra một dòng chứa một xâu chỉ gồm các kí tự L, R, U, D mô tả dãy lệnh.

Sample Input

2 2 2
0 0
1 0
0 1
1 1

Sample Output

UL

Giải thích

  • Nếu ban đầu robot ở ô (0, 1) thì vị trí robot sau mỗi lệnh tương ứng như sau: (0, 1) → (0, 1) → (0, 0).
  • Nếu ban đầu robot ở ô (1, 1) thì vị trí robot sau mỗi lệnh tương ứng như sau: (1, 1) → (0, 1) → (0, 0).

Subtasks

SubtaskĐiểmRàng buộc
115k = 1 và tất cả các ô đều là ô tự do.
225k = 1.
330n, m ≤ 10; k ≤ 3.
430Không có ràng buộc nào thêm.

---

Ghi chú về bản chuyển thể

Nhập từ stdin và in ra stdout, không cần tạo tệp .INP/.OUT.

Trạng thái lời giải: Chưa xác minh thời gian chạy trên toàn miền.

Không có thời lượng chính thức trong nguồn; phòng luyện tập dùng 180 phút, không mô phỏng thời lượng kỳ thi gốc. Nguồn chưa xác nhận đầy đủ điểm từng bài; dùng trọng số đều trên thang luyện tập 100, không phải thang điểm chính thức. Chuyển nhập/xuất tệp sang stdin/stdout; tiếng Việt là bản nguồn, bản tiếng Anh chưa dịch.
Nhóm Zalo