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ị.
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
Một số duy nhất là số lượng hàng tối đa Bo có thể thêm vào
Subtask 1 (5%): \(n ≤ 2\)
Subtask 2 (15%): \(n ≤ 100\) và \(ai ≤ 100\)
Subtask 3 (25%): \(n ≤ 1000\) và \(ai ≤ 2000\)
Subtask 4 (25%): \(n ≤ 1000\)
Subtask 5 (30%): \(n ≤ 10^6\)
Test 1
5
4 20 1 25 30
3
Có thể lần lượt thêm vào mặt hàng có giá trị 2, 5, 10
Test 1
3
6 10 15
4
Có thể lần lượt thêm vào mặt hàng có giá trị 3, 1, 5, 2
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\) và \(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\) và \(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\) và \(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
Test 1
10
2 4 3 7 3 9 4 10 9 8
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
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.
Test 1
5
4 2 1 5 3
3
Test 2
7
2 4 5 3 1 7 6
4
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}\)):
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]
\(\text{Output}\) [oldtrick.out]
#Multiple_Answers
Cần in ra \(n\) dòng, trong đó:
\(\text{Scoring}\)
\(\text{Example Tests}\)
\(\text{Example Test 1}\)
\(\text{Input}\)
3
1 3
2 3
3 3
\(\text{Output}\)
1
1 2
2 3
\(\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