Thi thử TS10 2024 - ngày 5

Bộ đề bài

1. supermarket

Điểm: 3 (p) Thời gian: 1.0s Bộ nhớ: 256M Input: bàn phím Output: màn hình

Bo được mẹ giao nhiệm vụ đi mua sắm tại siêu thị cho gia đình. Hôm nay là ngày may mắn của Bo, vì cậu là khách hàng thứ 690,420 đã đến siêu thị này và nhận được ưu đãi. Để ý thấy mọi giá cả mặt hàng cậu mua đều tình cờ là các con số khác nhau đôi một nên siêu thị đã cho ưu đãi như sau:
Bo có thể chọn hai trong số các mặt hàng đã mua và nếu ước chung lớn nhất giá trị hai hàng được chọn không có sẵn trong giỏ, cậu có thể thêm một đồ mới với giá trị tương ứng vào trong giỏ hoàn toàn miễn phí.
Bo có thể tiếp tục thực hiện hành động này với giỏ mới được thêm vào cho tới khi không thể thực hiện được nữa. Hãy giúp tìm số lượng hàng tối đa Bo có thể thêm vào qua ưu đãi siêu thị.

INPUT:

Dòng đầu gồm một số \(n\) là số mặt hàng Bo đã mua \((n ≤ 10^6)\)
Dòng thứ hai gồm n số nguyên dương ai là giá trị từng mặt hàng \((a_i ≤ 10^6)\)
Dữ liệu đảm bảo a_i đôi một khác nhau

OUTPUT:

Một số duy nhất là số lượng hàng tối đa Bo có thể thêm vào

SCORING:

Subtask 1 (5%): \(n ≤ 2\)
Subtask 2 (15%): \(n ≤ 100\)\(ai ≤ 100\)
Subtask 3 (25%): \(n ≤ 1000\)\(ai ≤ 2000\)
Subtask 4 (25%): \(n ≤ 1000\)
Subtask 5 (30%): \(n ≤ 10^6\)

Test 1

Input
5
4 20 1 25 30
Output
3

Có thể lần lượt thêm vào mặt hàng có giá trị 2, 5, 10

Test 1

Input
3
6 10 15
Output
4

Có thể lần lượt thêm vào mặt hàng có giá trị 3, 1, 5, 2

2. stock

Điểm: 3 (p) Thời gian: 1.0s Bộ nhớ: 256M Input: bàn phím Output: màn hình

Một nhà đầu tư chứng khoán Lphzz tài ba tiến hành đầu tư mua cổ phiếu tập đoàn Mentary và tối hóa lợi nhuận trong \(n\) ngày với \(4\) phiên giao dịch mua, bán. Biết ban đầu Lphzz có \(0\) cổ phiếu và bắt đầu tiến hành đầu tư. Trong lượt giao dịch \(1\)\(3\), nhà đầu tư sẽ tiến hành mua cổ phiếu (giá trị cổ phiếu ngày đó không được vượt quá số tiền hiện tại). Trong lượt giao dịch \(2\)\(4\), nhà đầu tư sẽ được bán cổ phiếu.
Yêu cầu: Hãy đưa ra mức lợi nhuận tối đa có thể thu được nếu nhà đầu tư Lphzz dùng cách tối ưu nhất của mình

Input:
Dòng đầu gồm số \(n\)\(m\) - lần lượt là số ngày mở cổ phiếu của tập đoàn Mentary \((4 ≤ n ≤ 10^7)\)
Dòng thứ hai gồm \(n\) số - giá cổ phiếu của tập đoàn Mentary vào ngày thứ \(i(1≤a[i]≤10^9)\)
Ouput:
Một số là tổng giá trị lợi nhuận tối đa thu về nếu Lphzz lựa chọn đúng đắn
In ra 0 nếu không thể lời

Scoring:
Subtask 1 (30%): n <= 100
Subtask 2 (30%): n<=1000
Subtask 3 (40%): n <= 1e7

Example

Test 1

Input
10 
2 4 3 7 3 9 4 10 9 8
Output
13

Lần 1: Mua ở ngày thứ 1, -2
Lần 2: Bán ở ngày thứ 6, -2+9=7
Lần 3: Mua ở ngày thứ 7, -2+9-4=3
Lần 4: Bán ở ngày thứ 8, -2+9-4+10=13

3. Viên ngọc

Điểm: 2 (p) Thời gian: 1.0s Bộ nhớ: 256M Input: bàn phím Output: màn hình

Ngày xửa ngày xưa, trong một vương quốc xa xôi, có một vị vua nổi tiếng về tính kiên nhẫn và trí tuệ. Một ngày nọ, nhà vua quyết định tổ chức một cuộc thi để tìm kiếm người kế vị xứng đáng. Cuộc thi này không chỉ đòi hỏi sức mạnh mà còn đòi hỏi trí tuệ và sự kiên nhẫn.

Nhà vua triệu tập tất cả các thanh niên trong vương quốc và đưa cho họ một nhiệm vụ tưởng chừng như đơn giản nhưng vô cùng thách thức. Ngài trao cho mỗi người một chiếc rương chứa các viên ngọc đánh số từ 1 đến \(n\), nhưng chúng được sắp xếp một cách lộn xộn.

"Nhiệm vụ của các ngươi là thu thập các viên ngọc theo thứ tự từ 1 đến \(n\) theo đúng thứ tự tăng dần. Các ngươi phải làm việc này qua nhiều vòng, mỗi vòng các ngươi đi qua rương từ trái sang phải và thu thập được nhiều viên ngọc nhất có thể theo thứ tự tăng dần.", nhà vua tuyên bố.

Nhà vua biết rằng thử thách này sẽ đòi hỏi sự thông minh và khả năng lập kế hoạch của các thí sinh. Ngài hứa rằng người nào hoàn thành nhiệm vụ với số vòng ít nhất sẽ được chọn làm người kế vị. Trong số các thí sinh tham gia, có một chàng trai trẻ có biệt danh là Giáo sư Hòa, nổi tiếng về sự thông minh và khéo léo. Hòa hoàn toàn có thể giải thử thách một cách dễ dàng, thế nhưng hiện tại, Hòa đang bận đi healing sau khoảng thời gian ôn thi vất vả. Hòa muốn nhờ bạn giải quyết thử thách của nhà vua.

Input

  • Dòng đầu tiên chứa một số nguyên \(n (1 \leq n \leq 2 \times 10^5)\): kích thước của mảng.
  • Dòng thứ hai chứa n số nguyên \(( x_1, x_2, …, x_n )\): các số trong mảng.

Output

  • In ra một số nguyên: số vòng lặp cần thiết để thu thập tất cả các viên ngọc theo thứ tự tăng dần.

Scoring

  • 50% số test \(n \leq 10^4\).
  • 50% số test còn lại không có ràng buộc gì thêm.

Example

Test 1

Input
5
4 2 1 5 3
Output
3

Test 2

Input
7
2 4 5 3 1 7 6
Output
4

4. Trò chơi cũ

Điểm: 2 (p) Thời gian: 1.0s Bộ nhớ: 256M Input: bàn phím Output: màn hình

Nhiều người trong chúng ta có lẽ đã từng chơi một trò khá “tà đạo” với một đồ thị: Tạo một mảng mới (gọi nó là \(T[i]\)) với \(n\) phần tử. Trong lúc thực hiện duyệt trên đồ thị để tạo ra một đồ thị cây, ta lưu tại chỉ số của các đỉnh này vào mảng \(T\) theo thứ tự thăm đỉnh đó, để từ đó có thể biết được tất cả các nút trong cây con có gốc là một nút \(u\) bất kì trong đồ thị đó chỉ bằng một cặp giá trị \(L_u\), \(R_u\). Có thể nhiều bạn vẫn chưa nhận ra, việc bạn làm đã thể hiện được ý tưởng cơ bản của một thuật toán khác, cũng trong thể loại này, là HLD (hay Heavy-Light Decomposition).

Nói nhiều rồi. Bây giờ, cũng là lúc mà chúng ta thử thực hiện điều ngược lại, cũng cho vui, cũng như cách mà chúng ta đã bắt đầu trick này vậy.

Cho \(n\) đỉnh và \(n - 1\) cạnh ẩn, tạo thành một đồ thị cây. Có tổng cộng \(n\) cặp \(L_i\), \(R_i\), và cặp thứ \(i\) cho biết với mảng \(T\) được tạo ra thông qua quá trình duyệt cây, thì toàn bộ số thứ tự các đỉnh nằm trong đoạn từ \(L_i\) đến \(R_i\) hoặc là số thứ tự đỉnh \(i\), hoặc là số thứ tự của đỉnh con của cây con với gốc là đỉnh \(i\).

Hãy khôi phục lại toàn bộ cây bị ẩn, bằng cách in ra \(n - 1\) cạnh mà bạn cho rằng là đồ thị cây ban đầu. Biết quy tắc duyệt cây được sử dụng trong bài này là như sau (được viết lại bằng ngôn ngữ \(\text{Python 3}\)):

Python
n = int(input())
r = int(input())
graph = []
for loop in range(n + 1):
    graph.append([])
T = [0] * (n + 1)
L = [0] * (n + 1)
R = [0] * (n + 1)
timeDfs = 0

def DFS(u: int, p: int):
    global timeDfs, T
    timeDfs += 1
    T[timeDfs] = u
    L[u] = timeDfs
    for v in graph[u]:
        if v == p:
            continue
        DFS(v, u)
    R[u] = timeDfs

for i in range(n - 1):
    u, v = [int(x) for x in input().split()]
    graph[u].append(v)
    graph[v].append(u)

DFS(r, 0)

for i in range(n):
    print(L[i + 1], R[i + 1]) #your input here

\(\text{Input}\) [oldtrick.inp]

  • Dòng một gồm một số \(n\) \((2 \le n \le 5*10^5)\), thể hiện số lượng đỉnh của cây cho trước.
  • \(n\) dòng sau, dòng thứ \(i\) gồm một cặp chỉ số \(L_i\), \(R_i\) \((1 \le L_i, R_i \le n)\), thể hiện rằng với các tạo ra mảng \(T\) theo như mô tả ở trên đề, các số trong đoạn từ \(L_i\) đến \(R_i\) sẽ là hoặc chỉ số của đỉnh \(i\) hoặc chỉ số của đỉnh con của đỉnh có số thứ tự là \(i\) trong cây cho trước.
  • \(\text{Input}\) trong tất cả các test được đảm bảo có ít nhất một cách biểu diễn cây thỏa mãn đề bài phù hợp với dữ liệu được cho.

\(\text{Output}\) [oldtrick.out] #Multiple_Answers

Cần in ra \(n\) dòng, trong đó:

  • Dòng đầu tiên in ra số thứ tự \(r\) gốc của cây ban đầu \((1 \le r \le n)\).
  • \(n - 1\) dòng tiếp theo, mỗi dòng gồm hai số \(u_i\), \(v_i\) \((1 \le u_i, v_i \le n)\), thể hiện rằng có một cạnh vô hướng nối giữa đỉnh có số thứ tự là \(u_i\) và đỉnh có số thứ tự là \(v_i\).

\(\text{Scoring}\)

  • Subtask \(0\) \((3\%)\): Example tests.
  • Subtask \(1\) \((15\%)\): Gọi gốc của cây ban đầu là \(r\). Với mọi \(i \ne r\), \(L_i = R_i\);
  • Subtask \(2\) \((10\%)\): \(R_i = n\), tập hợp các giá trị \(L_i\) tạo thành một hoán vị của các số từ \(1\) đến \(n\).
  • Subtask \(3\) \((10\%)\): Cây ban đầu (được ẩn) có dạng cây nhị phân (với \(n = 2^k - 1\), với \(k \in \mathbb{N}\), \(k > 0\)). Xem \(\text{Example Test 2}\) để biết hình dạng của cây nhị phân.
  • Subtask \(4\) \((27\%)\): \(n ≤ 2000\).
  • Subtask \(5\) \((25\%)\): \(n ≤ 10^5\).
  • Subtask \(6\) \((10\%)\): Full.

\(\text{Example Tests}\)

\(\text{Example Test 1}\)

\(\text{Input}\)

3
1 3
2 3
3 3

\(\text{Output}\)

1
1 2
2 3
\(\text{Explanation}\)

\(\text{Example Test 2}\)

\(\text{Input}\)

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

\(\text{Output}\)

1
1 2
1 3
2 4
2 5
3 6
3 7
\(\text{Explanation}\)

\(\text{Example Test 3}\)

\(\text{Input}\)

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

\(\text{Output}\)

1
1 2
1 3
2 4
2 5
4 6
4 7
\(\text{Explanation}\)