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

Chọn ĐTQG TPHCM 2023

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

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

Đang tải tiến độ…

  • 1
    Câu 1 — Đường tròn tâm O

    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 — Giá trung bì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 — Đường ống thoát nước

    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 — Các loại đồng xu

    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 — Cửa hàng trà sữa

    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 — Thẻ xe buýt miễn phí

    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 TPHCM 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. Đường tròn tâm O

Cho N điểm trên mặt phẳng tọa độ Oxy, điểm thứ i (1 ≤ i ≤ N) có tọa độ là (xi; yi).

Yêu cầu : Hãy viết chương trình xác định số lượng lớn nhất các điểm cùng nằm trên một đường tròn nào đó có tâm là gốc tọa độ O của hệ trục tọa độ.

Input

  • Dòng thứ nhất chứa số nguyên N (1 ≤ N ≤ 105);
  • Trên N dòng tiếp theo, dòng thứ i chứa 2 số nguyên xi, yi cho biết tọa độ của điểm thứ i. Các số nguyên này có giá trị tuyệt đối không vượt quá 104. Các số cách nhau bởi ít nhất một khoảng trắng. Tọa độ của các điểm có thể trùng nhau.

Output

Ghi ra một số nguyên là số lượng lớn nhất các điểm cùng nằm trên một đường tròn có tâm là gốc O.

Scoring

SubtaskĐiểmRàng buộc
130%1 ≤ N ≤ 1000
230%Tọa độ các điểm có giá trị tuyệt đối không vượt quá 100
340%1000 < N ≤ 105

Sample Input 1

8
-2 0
1 -1
3 1
1 1
3 3
1 3
-1 3
3 1

Sample Output 1

4

Notes

Có 4 điểm cùng nằm trên đường tròn tâm O bán kính √(10) là: C(3;1), F(1;3), G(-1;3) và H(3;1). Có thể kiểm tra được đây là số lượng lớn nhất các điểm cùng nằm trên một đường tròn tâm O.

---

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. Giá trung bình

Để có thể đưa ra những quyết định mua vào, bán ra hợp lý của cổ phiếu thì nhà đầu tư chứng khoán cần phân tích tình hình thị trường thật kỹ lưỡng. Một trong những yếu tố quan trọng được nhiều nhà đầu tư quan tâm là giá bán trung bình của một cổ phiếu so với một mức giá tham chiếu.

Yêu cầu : Xét giá bán của một cổ phiếu trong N phiên giao dịch và một mức giá tham chiếu P. Hãy viết chương trình cho biết có bao nhiêu phiên giao dịch liên tiếp trong N phiên trên có giá bán trung bình lớn hơn hoặc bằng giá tham chiếu P. Cụ thể là nếu đánh số các phiên giao dịch từ 1 đến N thì có bao nhiêu cặp chỉ số (L, R) để giá trung bình của các cổ phiếu trong phiên giao dịch từ L đến R là lớn hơn hoặc bằng giá P.

Input

  • Dòng thứ nhất chứa số nguyên N (1 ≤ N ≤ 106);
  • Dòng thứ hai chứa N số nguyên Gi (0 ≤ Gi ≤ 109) lần lượt cho biết giá bán của cổ phiếu trong N phiên giao dịch;
  • Dòng thứ ba chứa số nguyên P (0 ≤ P ≤ 109) là mức giá tham chiếu.

Output

Ghi ra một số nguyên là số phiên giao dịch liên tiếp trong N phiên được xét có giá bán trung bình lớn hơn hay bằng giá tham chiếu P.

Scoring

SubtaskĐiểmRàng buộc
130%1 < N ≤ 1000
220%1000 < N ≤ 104
350%5 · 105 < N ≤ 106

Sample Input 1

10
5 8 9 3 7 2 8 10 6 5
9

Sample Output 1

3

Notes

Các phiên giao dịch liên tiếp có giá trị trung bình lớn hơn hoặc bằng 9 là: {9}, {8; 10}, {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 3. Đường ống thoát nước

Trong một tòa nhà chung cư, người ta thiết kế một hệ thống thoát nước bao gồm N chốt được đánh số 1, 2, ⋯, N cùng với N đường ống hai chiều nối giữa N cặp chốt có dạng (i, j) với i ≠ j và 1 ≤ i, j ≤ N. Hệ thống là đạt yêu cầu nếu như từ mỗi chốt, nước đều có thể chảy đến tất cả các chốt khác thông qua các đường ống. Nguyên tắc hoạt động của hệ thống là: ban đầu hệ thống sẽ không có nước, mỗi khi có nước chảy vào từ một chốt X nào đó, nước sẽ thoát ra qua các chốt được nối trực tiếp với chốt X thông qua các đường ống. Cứ tiếp tục như thế, nước sẽ chảy lan ra toàn hệ thống và có xu hướng chảy càng lúc càng xa chốt X chứ không chảy ngược lại. Nếu nước chảy đến một chốt nào đó mà không chảy đi được nữa thì dừng lại tại đó.

Ban quản lý muốn bỏ bớt đúng một đường ống để hệ thống vẫn đạt yêu cầu và ứng với cách bỏ đó, tồn tại cách chọn chốt X thích hợp để mỗi khi có nước chảy vào X thì ở mọi chốt trong hệ thống, nước sẽ đều chảy đến được và sẽ thoát ra từ chốt đó bằng không quá K chốt khác.

Yêu cầu : Hãy viết chương trình xác định số cách chọn bỏ đi một đường ống nào đó để hệ thống còn lại vẫn đảm bảo các yêu cầu trên.

Input

  • Dòng thứ nhất chứa số N, K với 1 ≤ K < N ≤ 105;
  • Trên N dòng tiếp theo, mỗi dòng chứa một cặp số i, j cho biết có đường ống nước nối giữa chốt i và chốt j. Hệ thống sẽ đảm bảo đạt yêu cầu và các cặp (i, j) phân biệt nhau giữa các dòng.

Output

Ghi ra một số nguyên là số cách bỏ đường ống.

Scoring

SubtaskĐiểmRàng buộc
120%1 ≤ K < N ≤ 10
220%N - 2 ≤ K < N ≤ 104
320%K = 1 và 2 ≤ N ≤ 104
440%1 ≤ K < N ≤ 105

Sample Input 1

8 2
1 2
2 3
3 4
4 5
3 1
3 6
2 7
2 8

Sample Output 1

1

Notes

Ta có 1 cách bỏ đường ống như sau: bỏ đường ống nối (2, 3) và chọn chốt X là 7. Khi đó, nước sẽ chảy từ chốt 7 đến 2, từ đây thoát ra chốt 1 và 8; tiếp theo, từ chốt 1 chảy đến 3; từ chốt 3 chảy đến chốt 4 và 6; cuối cùng là từ chốt 4 đến 5.

Nếu bỏ đường ống nối chốt (1, 2) thì cho dù chọn chốt X là chốt nào thì khi đến chốt 3, nước sẽ thoát ra theo ít nhất 3 chốt khác (tức là lớn hơn K). Tương tự nếu bỏ đường ống (1, 3) thì cho dù chọn chốt X là chốt nào thì khi đến 2, nước sẽ thoát ra theo ít nhất 3 chốt khác.

Ngoài ra, nếu bỏ bất kỳ đường ống nào khác thì hệ thống sẽ không còn đạt yêu cầu nữa.

---

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. Các loại đồng xu

Ở ngôi làng Olympic thần tiên, người dân sống trong các nông trại rộng lớn giữa các ngọn núi. Họ dùng hệ thống tiền xu riêng và di chuyển bằng thảm bay. Vào một ngày hội đặc biệt của năm, Trưởng làng Triết tổ chức bán các nông trại và các thảm bay với mức giá ưu đãi cho người dân: mỗi nông trại có giá tiền là N đồng và mỗi thảm bay có giá tiền là M đồng, trong đó N và M là các số nguyên dương.

Hệ thống tiền có nhiều mệnh giá khác nhau là các số nguyên dương, mỗi mệnh giá có số lượng xu không giới hạn. Thú vị là với mỗi mệnh giá của hệ thống tiền ở đây, người dân có thể dùng một hoặc nhiều xu cùng loại để có được số tiền vừa đúng N đồng, đủ mua một nông trại. Trưởng làng đã tính toán rằng không có mệnh giá nào khác với các xu có trong làng mà cũng có tính chất thú vị như nêu trên.

Yêu cầu: Tính số lượng xu ít nhất (có thể cùng loại hoặc khác loại, với số lượng tùy ý) để đổi ra được đúng M đồng, là số tiền vừa đủ mua được một cái thảm bay.

Input

  • Dòng duy nhất chứa hai số nguyên dương N và M với 1 ≤ N ≤ 1010, 1 ≤ M ≤ 105.

Output

  • Một số nguyên là số lượng xu ít nhất cần sử dụng để có thể mua được một cái thảm bay.

Subtasks

  • 50% số điểm ứng với 1 ≤ N ≤ 100, 1 ≤ M ≤ 1000.
  • 50% số điểm ứng với 1 ≤ N ≤ 1010, 1 ≤ M ≤ 105.

4 10

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. Cửa hàng trà sữa

Sau những ngày chinh chiến cùng các kỳ thi lập trình thi đấu, Tài đã về nhà mở một cửa hàng trà sữa của riêng mình. Cửa hàng có 3 loại trà đặc biệt là: trà sữa hạnh nhân, trà sữa sen vàng và trà sữa gừng. Các loại trà sữa này được pha chế theo cách rất đặc biệt làm người thưởng thức có trải nghiệm khó quên. Nhân dịp khai trương, cửa hàng xếp các ký tự H, S và G đại diện cho các loại trà sữa trên thành một dãy có độ dài N và mỗi khách đến mua có thể tham gia một chương trình khuyến mãi như sau: khách chọn ra dãy các ký tự liên tiếp tương ứng với các loại trà mà mình muốn mua; Tài sẽ đếm số lượng các ký tự H, S, G có trong dãy đã chọn và nhân các giá trị này lại với nhau; nếu kết quả thu được là một lũy thừa của 2 thì khách hàng sẽ nhận được phiếu giảm giá.

Yêu cầu: Đếm số cặp chỉ số (L, R) với 1 ≤ L ≤ R ≤ N sao cho nếu gọi a, b, c lần lượt là số lượng ký tự H, S, G có trong đoạn dãy con liên tiếp từ L đến R thì tích a × b × c là một lũy thừa của 2.

Input

  • Dòng duy nhất chứa N ký tự thuộc {H, S, G} viết liên tiếp nhau không dấu cách, trong đó 1 ≤ N ≤ 105.

Output

  • Một số nguyên là số cách để nhận được khuyến mãi, cũng chính là số chuỗi con thỏa mãn yêu cầu đã nêu.

Subtasks

  • 20% số điểm ứng với N ≤ 102.
  • 40% số điểm ứng với 102 < N ≤ 103.
  • 40% số điểm ứng với 103 < N ≤ 105.

HHSSGG

4

---

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. Thẻ xe buýt miễn phí

Với thành tích học tập xuất sắc trong lớp chuyên Tin, bạn Hùng được nhà tài trợ tặng thưởng một thẻ đi xe buýt miễn phí. Thành phố có N trạm xe buýt, được đánh số từ 1 đến N và có M tuyến xe vận chuyển hành khách giữa các trạm, được đánh số từ 1 đến M. Tuyến xe thứ i sẽ di chuyển hai chiều giữa trạm Ai và Bi với tiền vé là Ci. Hệ thống các tuyến xe được thiết kế để đảm bảo rằng khi đi xe buýt từ một trạm, ta đều có thể đến được một trạm bất kỳ khác. Nhà của Hùng ở gần trạm S còn trường học thì ở gần trạm T. Với thẻ xe buýt miễn phí, Hùng được chọn đúng một hành trình mà tổng tiền vé ít nhất để đi từ trạm S đến trạm T. Có thể có nhiều hành trình khác nhau để đi từ S đến T với cùng tổng tiền vé ít nhất như thế, nhưng Hùng chỉ được chọn ra đúng một hành trình.

Lúc đó, Hùng sẽ được miễn giá vé cho tất cả các tuyến xe thuộc hành trình đã chọn. Ngoài ra, Hùng cũng thường hay đi đến hai nhà sách ở gần trạm U và V. Khi di chuyển bằng xe buýt từ U đến V, Hùng không cần phải trả tiền vé cho những tuyến xe buýt được miễn giá vé. Một hành trình miễn giá vé được gọi là tối ưu khi số tiền Hùng phải trả để mua vé đi từ U đến V là nhỏ nhất.

Yêu cầu: Tính tổng tiền vé ít nhất mà Hùng phải trả để đi từ U đến V nếu Hùng chọn được một hành trình miễn giá vé tối ưu.

Input

  • Dòng thứ nhất chứa hai số nguyên N và M (2 ≤ N ≤ 105, 1 ≤ M ≤ 2 × 105).
  • Dòng thứ hai chứa hai số nguyên S và T (1 ≤ S, T ≤ N; S ≠ T).
  • Dòng thứ ba chứa hai số nguyên U và V (1 ≤ U, V ≤ N; U ≠ V; cặp (S, T) khác cặp (U, V)).
  • Trên M dòng tiếp theo, dòng thứ i chứa ba số nguyên Ai, Bi, Ci (1 ≤ Ai, Bi ≤ N; 1 ≤ Ci ≤ 109; Ai ≠ Bi).

Output

  • Một số nguyên là tổng tiền vé ít nhất Hùng phải trả theo yêu cầu trên.

Subtasks

  • 30% số điểm ứng với S = U.
  • 30% số điểm ứng với N ≤ 300.
  • 40% số điểm ứng với 2 ≤ N ≤ 105, 1 ≤ M ≤ 2 × 105.

5 7 1 3 4 5 1 2 10 1 3 30 1 4 15 2 3 10 4 3 5 3 5 10 4 5 12

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.

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