Kho đề thi
Chọn đội tuyển

Chọn ĐTQG Đại học Sư phạm Hà Nội 2023

Chọn đội tuyển HSG quốc gia cấp tỉnh, thành phố — https://oj.clue.edu.vn/exams/csp-tst-23/

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

Đang tải tiến độ…

  • 1
    Câu 1 — Rút thăm trúng thưởng

    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 — Hành trình du lịch

    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 — Tô màu cây

    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
  • 4
    Câu 4 — Hoán vị trộn

    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
  • 5
    Câu 5 — Dãy đặc biệt

    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
  • 6
    Câu 6 — Đi tìm kho báu

    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

Chọn ĐTQG Đại học Sư phạm Hà Nội 2023

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. Rút thăm trúng thưởng

Bờm tham gia trò chơi rút thăm trúng thưởng trong đêm hội Trăng rằm. Ban tổ chức chuẩn bị k loại thẻ bài, các loại thẻ bài tương ứng ghi các giá trị từ 1 đến k, các thẻ được sắp xếp vào trong 2 chiếc hộp như sau:

  • Hộp thứ nhất: chỉ chứa các loại thẻ bài có giá trị là số lẻ trong khoảng từ 1 tới k, số lượng mỗi loại thẻ không giới hạn.
  • Hộp thứ hai: chứa chứa các thẻ bài có giá trị là số chẵn trong khoảng từ 1 tới k, số lượng mỗi loại thẻ không giới hạn.

Theo thể lệ của Ban tổ chức, một người chơi sẽ được thực hiện n lần rút thẻ. Các lượt rút thẻ theo thứ tự bắt đầu từ hộp thứ nhất tới hộp thứ hai và lặp lại quá trình đó.

Ví dụ: k=4, n=3

  • Lượt thứ nhất: Người chơi rút thẻ trong hộp thứ nhất có thể nhận được các thẻ bài có giá trị 1 hoặc 3.
  • Lượt thứ hai: Người chơi rút thẻ trong hộp thứ hai có thể nhận được các thẻ bài có giá trị 2 hoặc 4.
  • Lượt thứ ba: Người chơi rút thẻ trong hộp thứ nhất có thể nhận được các thẻ bài có giá trị 1 hoặc 3.

Ban tổ chức đưa ra một con số m và người chơi sẽ nhận được quà nếu tổng số thẻ sau n lần rút là một số chia hết cho m.

Yêu cầu: Hãy tính giúp Bờm xem có bao nhiêu cách rút ra các thẻ bài để có thể nhận được thưởng.

Input

Ba số nguyên dương n, k, m (2 ≤ n, k ≤ 109, m ≤ 100).

Output

Một số nguyên dương là số cách rút thẻ thỏa mãn yêu cầu của Ban tổ chức. Vì kết quả rất lớn nên bạn chỉ cần đưa ra phần dư của đáp án khi chia cho 123456789.

Scoring

SubtaskĐiểmRàng buộc
120%n, k ≤ 1000
230%m lẻ, n ≤ 103
330%n ≤ 103
420%Không có ràng buộc gì thêm

Sample Input 1

3 4 4

Sample Output 1

4

Sample Input 2

3 2 4

Sample Output 2

1

Notes

Giải thích test ví dụ 1:

Có tất cả 8 cách rút tất cả nhưng có 4 cách rút thẻ có tổng chia hết cho 4

  • Cách 1: 1 2 1
  • Cách 2: 1 4 3
  • Cách 3: 3 4 1
  • Cách 4: 3 2 3

---

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. Hành trình du lịch

Sau chuỗi ngày ôn và thi mệt mỏi, Bờm quyết định du lịch đến đất nước Byteland. Đất nước xinh đẹp này có n thành phố, các thành phố kết nối với nhau bởi n-1 con đường hai chiều. Con đường thứ i nối từ thành phố x đến thành phố y có độ dài w. Thêm nữa, qua quá trình khảo sát Bờm có lên thang điểm về độ đẹp cho mỗi thành phố. Độ đẹp của thành phố thứ i được đánh giá là ai.

Việc đi lại giữa các thành phố được thực hiện bằng xe buýt. Cách vận hành xe buýt ở đây cũng rất đặc biệt: Giả sử xe buýt đang ở thành phố u, nó sẽ xác định tuyến đi tiếp theo bằng cách chọn một thành phố v (khác u) có av - d(u,v) là lớn nhất. Trong đó d(u,v) được định nghĩa là khoảng cách đi từ u đến v (nếu có nhiều thành phố thỏa mãn thì nó sẽ di chuyển đến thành phố có chỉ số nhỏ nhất). Và khi đã chọn được điểm đến là thành phố v thì xe buýt sẽ đi thẳng từ u đến v mà không dừng ở các thành phố trung gian.

Yêu cầu: Cho Q truy vấn, mỗi truy vấn có hai tham số s, k ứng với việc Bờm xuất phát từ thành phố s và di chuyển qua k tuyến đường bằng xe buýt theo cách mô tả ở trên. Hãy cho biết, với mỗi truy vấn thì Bờm sẽ kết thúc chuyến đi ở thành phố nào?

Input

  • Dòng đầu chứa hai số nguyên dương n, Q (n, Q ≤ 2 × 105) là số thành phố và số truy vấn.
  • Dòng hai chứa n số nguyên a1, a2, ⋯ an là vẻ đẹp của n thành phố (|ai| ≤ 109).
  • n-1 dòng tiếp theo dạng x y w mô tả n-1 con đường (1 ≤ x, y ≤ n, 0 < w ≤ 109).
  • Q dòng tiếp là truy vấn dạng s k: điểm xuất phát và số tuyến đường sẽ đi.

Output

Gồm Q dòng, mỗi dòng in ra chỉ số thành phố Bờm sẽ kết thúc ở mỗi truy vấn.

Scoring

SubtaskĐiểmRàng buộc
120%n, Q ≤ 200, k ≤ 200
225%n, Q ≤ 2000
325%k = 1
430%Không có ràng buộc gì thêm

Sample Input 1

5 4
1 2 3 4 5
1 4 3
3 2 5
4 3 2
1 5 2
1 1
2 3
3 2
5 1

Sample Output 1

5
3
3
1

Notes

Hành trình của tour của Bờm:

1 → 5

2 → 3 → 4 → 5

3 → 4 → 5

5 → 1

---

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. Tô màu cây

Cho một cây có n đỉnh. Các đỉnh được đánh số từ 1 đến n và gốc của cây là đỉnh 1. Một số đỉnh của cây đã được tô màu đen, một số khác thì chưa được tô màu. Ta sẽ tìm cách tô màu cho tất cả các đỉnh.

Thao tác tô màu sẽ được thực hiện như sau: Chọn một đỉnh u và tô tất cả các đỉnh v thành màu đen nếu các điều kiện sau thỏa mãn:

  • Đỉnh v nằm trong cây con gốc u.
  • Khoảng cách giữa hai đỉnh chính xác là i. Trong đó khoảng cách giữa hai đỉnh u và v là số cạnh nhỏ nhất để đi từ u đến v.

Chi phí để tô màu một đỉnh có khoảng cách i là ci. Tại một thao tác tô màu, nếu chọn đỉnh u mà có nhiều hơn một đỉnh v cùng có khoảng cách với đỉnh u bằng i thì các đỉnh này sẽ được tô màu cùng lúc với chi phí là ci.

Yêu cầu : Tìm cách tô sao cho tất cả các đỉnh đều được tô thành màu đen với chi phí là nhỏ nhất.

Input

  • Dòng đầu chứa n (1 ≤ n ≤ 106).
  • Dòng tiếp theo gồm n số c0,c1,⋯,cn-1 (ci ≤ 109), với ci là chi phí để tô màu ở khoảng cách i.
  • Dòng tiếp theo gồm n số a1,a2,⋯,an. Trong đó ai=0/1. Nếu ai=0 tương ứng là đỉnh i chưa được tô màu, ai=1 là đỉnh đã được tô màu.
  • n-1 dòng tiếp theo, mỗi dòng gồm hai số u,v thể hiện một cạnh của cây.

Output

Một dòng ghi một số là tổng chi phí để tô tất cả các nút thành màu đen.

Scoring

SubtaskĐiểmRàng buộc
120%n ≤ 20
230%n ≤ 200
330%n ≤ 2000
4Còn lạiKhông có ràng buộc gì thêm

Sample Input 1

5
10 5 1 5 5
0 1 0 0 1
1 2
2 3
2 4
4 5

Sample Output 1

11

Notes

  • Chọn đỉnh 1 làm gốc, tô màu đỉnh 3 và 4 với khoảng cách 2, chi phí 1.
  • Sau đó tô đỉnh 1 với khoảng cách 0, chi phí 10.

---

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 4. Hoán vị trộn

Cho hai dãy số nguyên dương độ dài n: a=(a1,a2,⋯,an) và b=(b1,b2,⋯,bn). Biết rằng các phần tử của hai dãy số là các số nguyên dương, không nhất thiết là phân biệt, được lấy từ tập {1,2,⋯,n}.

Đối với hai dãy đã cho, ta có thể thực hiện phép biến đổi sau đây: chọn hai chỉ số i và j với 1 ≤ i ≤ j ≤ n, sau đó hoán đổi hai dãy con ai,ai+1,⋯,aj và bi,bi+1,⋯,bj của hai dãy cho nhau, ta thu được hai dãy mới:

(a1,a2,⋯,ai-1,bi,bi+1,⋯,bj,aj+1,aj+2,⋯,an)

và:

(b1,b2,⋯,bi-1,ai,ai+1,⋯,aj,bj+1,bj+2,⋯,bn).

Như vậy, phép biến đổi nêu trên được xác định bởi cặp hai chỉ số (i,j).

Nếu sau khi thực hiện phép biến đổi như vậy có ít nhất một trong hai dãy thu được là hoán vị của {1,2,⋯,n}, thì ta thu được một hoán vị trộn.

Yêu cầu : Hãy xác định xem có thể thu được hoán vị trộn bởi bao nhiêu cách.

Input

Dữ liệu gồm nhiều test có cấu trúc như sau:

  • Dòng đầu tiên là số t (t ≤ 5) là số test. Sau đó là các test, mỗi test gồm:Dòng thứ nhất chứa số nguyên n (1 ≤ n ≤ 2 · 105).Dòng thứ hai chứa dãy số a1,a2,⋯,an (ai ≤ n).Dòng thứ ba chứa dãy số b1,b2,⋯,bn (bi ≤ n).

Output

Gồm t số nguyên tương ứng là số cách khác nhau có thể thu được hoán vị trộn nhờ thực hiện phép biến đổi đã nêu đối với hai dãy tương ứng trong dữ liệu vào.

Scoring

SubtaskĐiểmRàng buộc
130%n ≤ 100
230%n ≤ 5000
3Còn lạin ≤ 200000

Sample Input 1

2
6
3 2 1 4 4 5
2 3 3 4 6 5
2
1 2
1 2

Sample Output 1

8
3

---

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 5. Dãy đặc biệt

Cho hai dãy số nguyên cùng có n phần tử A=(a1,a2,⋯,an), B=(b1,b2,⋯,bn) và một số nguyên dương d. Gọi dãy số i1,i2,⋯,ik là đặc biệt nếu:

  • 1 ≤ i1 < i2 < ⋯ < ik ≤ n;
  • |aij-aij-1| ≤ d với mọi j=2,⋯,k;
  • |bij-bij-1| ≤ d với mọi j=2,⋯,k.

Yêu cầu : Bạn hãy tìm dãy đặc biệt có nhiều phần tử nhất.

Input

  • Dòng đầu chứa hai số nguyên dương n,d (n ≤ 105, d ≤ 109).
  • Dòng thứ hai chứa n số nguyên a1,a2,⋯,an (|ai| ≤ 109) mô tả dãy a.
  • Dòng thứ ba chứa n số nguyên b1,b2,⋯,bn (|bi| ≤ 109) mô tả dãy b.

Output

Một số nguyên duy nhất là kích thước của dãy đặc biệt tìm được.

Scoring

SubtaskĐiểmRàng buộc
120%n ≤ 20
220%n ≤ 2000
320%n ≤ 30000
420%b1=b2=⋯=bn
5Còn lạiKhông có điều kiện gì thêm

Sample Input 1

5 3
1 2 3 4 5
5 1 4 3 2

Sample Output 1

4

Sample Input 2

10 187
110 -187 554 -722 811 -930 346 24 933 132
113 72 -962 77 -242 -118 256 -759 -756 368

Sample Output 2

1

Notes

Rõ ràng, (2,3,4,5) là dãy đặc biệt.

Trong ví dụ thứ hai, không tìm được cặp giá trị (i,j) nào thỏa mãn được các điều kiện đề bài. Đáp số là 1.

---

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 6. Đi tìm kho báu

Băng Mũ Rơm của Luffy đã đặt chân đến hòn đảo Laugh Tale, nơi chứa kho báu ONE PIECE. Luffy tìm thấy n chiếc hộp, chiếc hộp thứ i chứa các đồ có giá trị ci. Trong tay Luffy có k chiếc chìa khóa được đánh số từ 1 đến k. Chìa khóa thứ i có thể được dùng để mở một trong hai chiếc hộp ai hoặc bi.

Mỗi chiếc hộp chỉ có thể được mở khóa một lần và không cần thiết phải dùng tất cả các chìa khóa.

Luffy chỉ được thực hiện Q truy vấn, truy vấn thứ i là yêu cầu thuộc một trong hai loại:

  • Bỏ đi chiếc chìa khóa thứ pi; các chìa khóa còn lại không được đánh số lại sau các truy vấn.
  • Thêm lại chiếc chìa khóa pi đã bị bỏ đi trước đó; các chìa khóa còn lại không cần đánh số lại.

Yêu cầu : Hãy cho biết, sau khi thực hiện mỗi truy vấn, dùng các chìa khóa còn lại để mở hộp, với cách mở khóa hộp luôn tối ưu, tổng giá trị kho báu lớn nhất thu được từ các hộp được mở là bao nhiêu.

Input

  • Dòng đầu tiên chứa ba số nguyên dương n,k,Q (2 ≤ n ≤ 2 · 105, 1 ≤ k,Q ≤ 2 · 105) là số hộp kho báu, số chìa khóa và số truy vấn.
  • Dòng tiếp theo gồm n số nguyên dương c1,c2,⋯,cn (ci ≤ 109), là giá trị của các hộp kho báu.
  • k dòng tiếp theo, dòng thứ i gồm hai số nguyên dương ai,bi (1 ≤ ai,bi ≤ n, ai ≠ bi), mô tả chiếc chìa khóa thứ i mở được hộp ai,bi.
  • Q dòng tiếp theo, mỗi dòng chứa hai số nguyên mô tả các truy vấn:1 pi: Cho biết đây là truy vấn loại 1 với chìa khóa bị bỏ đi là pi (1 ≤ pi ≤ n).2 pi: Cho biết đây là truy vấn loại 2 với chìa khóa được thêm là pi. Dữ liệu đảm bảo chìa khóa này đã được bỏ đi trước đó.

Output

Gồm k dòng, dòng thứ i gồm một số nguyên là tổng giá trị kho báu lớn nhất thu được sau khi thực hiện truy vấn thứ i.

Scoring

SubtaskĐiểmRàng buộc
120%N,M,Q ≤ 16
230%N,M,Q ≤ 2000
350%Không có ràng buộc gì thêm

Sample Input 1

4 4 4
9 5 7 2
1 2
2 3
3 1
1 4
1 4
1 1
2 1
1 2

Sample Output 1

21
16
21
16

Notes

  • Sau truy vấn thứ nhất, còn lại các chìa khóa 1,2,3. Ta có thể dùng chìa 1 để mở hộp 2, chìa 2 để mở hộp 3 và chìa 3 để mở hộp 1. Tổng giá trị của các hộp được mở là 9+5+7=21.
  • Sau truy vấn thứ hai, còn lại chìa khóa 2 và 3. Ta có thể dùng chìa 2 để mở hộp 3, chìa 3 để mở hộp 1. Tổng giá trị của các hộp được mở là 9+7=16.
  • Sau truy vấn thứ ba, còn lại các chìa khóa 1,2,3. Giống truy vấn một, tổng giá trị của các hộp được mở là 9+5+7=21.
  • Sau truy vấn thứ tư, chỉ còn lại chìa khóa 1 và 3. Tổng giá trị các hộp mở được là 9+7=16.

---

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.

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