Điều hướng chính

Ngôn ngữ

Phím tắt

/
Chuyển đến ô tìm bài
g p
Đi đến bài tập
g c
Đi đến kỳ thi
g u
Đi đến người dùng
?
Mở trợ giúp phím tắt

Bài tập

Bài được chọn theo nhịp luyện tập của bạn, cùng mọi bài mới vừa lên.

root

Hấp thụ năng lượng

100 điểm

Bạn đang chơi một trò chơi điện tử nổi tiếng của Marvel có tên là Dr. Strange. Trong trò chơi này, bạn nhập vai một siêu anh hùng đang giải cứu thế giới bằng cách hấp thụ sức mạnh của các quái vật.

Bạn được cung cấp danh sách \(N\) quái vật. Quái vật thứ \(i\) xuất hiện tại thời điểm \(L_i\) và tồn tại cho đến thời điểm \(R_i\) (bao gồm cả \(L_i\) và \(R_i\)). Mỗi quái vật có một cấp độ sức mạnh \(P_i\). Nhiều quái vật có thể xuất hiện cùng một lúc.

Để chiến đấu, bạn thực hiện \(M\) lần hấp thụ sức mạnh liên tiếp theo thứ tự. Trước lần hấp thụ đầu tiên, bạn bắt đầu với một giá trị sức mạnh đã hấp thụ ban đầu là \(\text{Power}_0 = 1\) (hấp thụ từ chính bản thân bạn).

Đối với mỗi lần hấp thụ \(j = 1, 2, \ldots, m\), năng lượng khả dụng \(E_j\) của bạn tại thời điểm đó được tính theo công thức:

\[E_j = 1 + (D_j \cdot \text{Power}_{j-1} + A_j) \bmod F_j\]

Trong đó, \(D_j\) là hệ số độ bền (durability), \(A_j\) là hệ số nhanh nhẹn (agility), \(F_j\) là mức độ mệt mỏi (fatigue) ở lần hấp thụ \(j\), và \(\text{Power}_{j-1}\) là tổng sức mạnh quái vật đã hấp thụ được trong lần di chuyển trước đó (\(j-1\)).

Vì bạn là Dr. Strange, bạn có khả năng du hành thời gian. Tại thời điểm \(t_j\) của lần hấp thụ thứ \(j\), với năng lượng \(E_j\) này, bạn sẽ hấp thụ sức mạnh của \(E_j\) quái vật yếu nhất (những quái vật có cấp độ sức mạnh \(P\) nhỏ nhất) đang hiện diện. Nếu tại thời điểm đó có ít hơn \(E_j\) quái vật, bạn sẽ hấp thụ tất cả chúng. Việc hấp thụ sức mạnh của chúng chỉ ảnh hưởng đến năng lượng của bạn mà không làm yếu hay loại bỏ bất kỳ quái vật nào.

Gọi \(\text{Power}_j\) là tổng sức mạnh hấp thụ được trong lần di chuyển thứ \(j\). Nhiệm vụ của bạn là xác định giá trị của \(\text{Power}_1, \text{Power}_2, \ldots, \text{Power}_m\).

Input

  • Dòng đầu tiên chứa hai số nguyên \(N, M\) -- số lượng quái vật và số lần hấp thụ (\(1 \le N, M \le 10^5\)).
  • \(N\) dòng tiếp theo, mỗi dòng chứa ba số nguyên \(L_i, R_i, P_i\) -- thời điểm xuất hiện, thời điểm biến mất, và cấp độ sức mạnh của quái vật thứ \(i\) (\(1 \le L_i \le R_i \le 10^5\), \(1 \le P_i \le 10^7\)).
  • \(M\) dòng tiếp theo, mỗi dòng chứa bốn số nguyên \(t_j, D_j, A_j, F_j\) -- thời điểm thực hiện lần hấp thụ \(j\) và các hệ số tính toán năng lượng. Lưu ý rằng tất cả các giá trị \(t_j\) là một hoán vị của các số từ \(1\) đến \(M\) (\(1 \le t_j \le M\), \(0 \le D_j, A_j \le 10^5\), \(1 \le F_j \le 10^5\)).

Output

In ra \(M\) dòng. Mỗi dòng chứa một số nguyên duy nhất là tổng sức mạnh hấp thụ được trong lần di chuyển thứ \(j\).

Example

Test 1

Input
3 3
1 2 10
2 3 20
1 3 5
1 2 2 2
3 3 1 3
2 1 1 5
Output
5
25
15
Note
  • Lần 1 (Thời điểm \(t_1=1\)): Có 2 quái vật hiện diện (Power 10, 5). Ta có \(\text{Power}_0 = 1\). Năng lượng \(E_1 = 1 + (2 \times 1 + 2) \bmod 2 = 1\). Hấp thụ 1 quái vật yếu nhất (Power 5). \(\text{Power}_1 = 5\).
  • Lần 2 (Thời điểm \(t_2=3\)): Có 2 quái vật hiện diện (Power 20, 5). Ta có \(\text{Power}_1 = 5\). Năng lượng \(E_2 = 1 + (3 \times 5 + 1) \bmod 3 = 2\). Hấp thụ 2 quái vật yếu nhất (Power 5, 20). \(\text{Power}_2 = 5 + 20 = 25\).
  • Lần 3 (Thời điểm \(t_3=2\)): Có 3 quái vật hiện diện (Power 10, 20, 5). Ta có \(\text{Power}_2 = 25\). Năng lượng \(E_3 = 1 + (1 \times 25 + 1) \bmod 5 = 2\). Hấp thụ 2 quái vật yếu nhất (Power 5, 10). \(\text{Power}_3 = 5 + 10 = 15\).

Scoring

  • Subtask \(1\) (\(20\%\) số điểm) : \(N, M \leq 100\).
  • Subtask \(2\) (\(20\%\) số điểm) : \(N, M \leq 2000\).
  • Subtask \(3\) (\(20\%\) số điểm) : \(M = 1\).
  • Subtask \(4\) (\(20\%\) số điểm) : \(t_j < t_{j + 1}\) với mọi \(i = 1..M-1\).
  • Subtask \(5\) (\(20\%\) số điểm) : không có ràng buộc gì thêm.

root

Trang trí lớp

100 điểm

Để chuẩn bị cho ngày lễ kỷ niệm của trường, các bạn trong lớp được giao nhiệm vụ trang trí hai bên tường lớp học bằng các dải màu. Mỗi bên tường sẽ được trang trí theo một quy luật riêng, lặp lại tuần hoàn vô hạn.

Cụ thể:

  • Bên trái lớp học được trang trí theo một dãy màu \(a_1, a_2, \dots, a_n\), và dãy này sẽ lặp lại vô hạn: \(a_i = a_{i+n}\) với mọi \(i\).
  • Bên phải lớp học được trang trí theo một dãy màu \(b_1, b_2, \dots, b_m\), và cũng lặp lại vô hạn: \(b_i = b_{i+m}\) với mọi \(i\).

Bạn Kino là người rất tinh mắt, muốn kiểm tra mức độ khác biệt giữa hai bên tường. Cụ thể, Kino chọn ra \(k\) vị trí đầu tiên (tính từ trái sang phải) và đo độ khác biệt màu sắc giữa hai bên tường ở mỗi vị trí. Độ khác biệt giữa hai màu \(a_i\) và \(b_i\) tại cùng vị trí được xác định bằng phép toán XOR bitwise: \(a_i \oplus b_i\).

Input

  • Dòng đầu tiên chứa ba số nguyên \(n, m, k\) \((1 \leq n, m \leq 10^5,\ 1 \leq k \leq 10^{18})\).
  • Dòng thứ hai chứa \(n\) số nguyên \(a_1, a_2, \dots, a_n\) \((0 \leq a_i \leq 10^{18})\).
  • Dòng thứ ba chứa \(m\) số nguyên \(b_1, b_2, \dots, b_m\) \((0 \leq b_i \leq 10^{18})\).

Output

In ra một số nguyên duy nhất --- tổng độ khác biệt ở \(k\) vị trí đầu tiên, chia dư cho \(10^9 + 7\).

Example

Test 1

Input
10 5 30
5 16 2 10 7 2 4 20 5 12
4 11 14 23 5
Output
435

Test 2

Input
3 2 10
1 6 4
5 2
Output
33

Scoring

\begintabularc c l
\hline
Subtask & Điểm & Ràng buộc

\hline
1 & 18 & \(k \leq 2 \cdot 10^5\)

2 & 13 & \(n\) \(mod\) \(m = 0\)

3 & 30 & \(k \le 10^9\)

4 & 39 & Không có ràng buộc bổ sung

\hline
\endtabular

root

Biến Đổi Trên Cây

100 điểm

Minh Anh được mời để đưa ra một bài toán khó cho cuộc thi "coding ao làng" vừa được tổ chức gần đây. Phân vân với những ý tưởng của mình, cô ấy đang cân nhắc sử dụng bài toán sau.

Bạn được cho một cây không trọng số gồm \(N\) đỉnh, với gốc là đỉnh \(1\). Mỗi đỉnh \(i\) có một giá trị \(v_i\) đi kèm. Cấu trúc cây được mô tả bởi mảng \(p_1, p_2, \dots, p_{N-1}\), trong đó \(p_i\) là cha của đỉnh \(i+1\).

Một hàm \(f(y)\) được định nghĩa cho một đỉnh \(y\) trong cây như sau:

\[ f(y) \; = \; \sum_{x \in S_y} d(x, y) \cdot v_x \]

trong đó \(d(x, y)\) là khoảng cách giữa hai đỉnh \(x\) và \(y\), còn \(S_y\) là tập các đỉnh mà \(y\) là tổ tiên của chúng.

Bạn được cho \(Q\) truy vấn, mỗi truy vấn gồm hai đỉnh \(x\) và \(y\). Với mỗi truy vấn, cần mô phỏng các thao tác sau trên cây và tính giá trị \(f(y)\):

  • Gắn tất cả các đỉnh mà cha của chúng là \(x\) sang cha của \(x\).
  • Loại bỏ \(x\) khỏi cây.
  • Chèn lại đỉnh \(x\) vào cây, giữa \(y\) và một hậu duệ của \(y\) thuộc cây con trước đó chứa \(x\).

Nếu \(y\) là cha của \(x\), cấu trúc cây không thay đổi. Luôn đảm bảo \(x\) thuộc cây con của \(y\). Sau mỗi truy vấn, giá trị \(f(y)\) được tính trên cây đã tạm thời thay đổi, sau đó cây trở về trạng thái ban đầu.

Input

  • Dòng đầu tiên chứa hai số nguyên \(N\) và \(Q\) (\(1 \le N, Q \le 5 \cdot 10^5\)) --- số đỉnh của cây và số truy vấn.
  • Dòng thứ hai chứa \(N\) số nguyên \(v_1, v_2, \dots, v_N\) (\(1 \le v_i \le 10^6\)) --- giá trị của từng đỉnh.
  • Dòng thứ ba chứa \(N-1\) số nguyên \(p_1, p_2, \dots, p_{N-1}\) (\(1 \le p_i \le i\)) --- \(p_i\) là cha của đỉnh \(i+1\).
  • Mỗi dòng trong \(Q\) dòng tiếp theo chứa hai số nguyên \(x\) và \(y\) (\(1 \le x, y \le N\)) --- các đỉnh liên quan đến thao tác đã mô tả.

Output

  • In ra \(Q\) dòng, mỗi dòng là giá trị của hàm \(f(y)\) trên cây sau khi thực hiện thao tác của truy vấn tương ứng.

Example

Test 1

Input
3 1
1 2 3
1 2
3 1
Output
7

Test 2

Input
3 2
4 5 6
1 1
2 1
3 1
Output
11
11

Test 3

Input
5 3
2 5 2 2 2
1 2 3 2
4 3
3 2
5 1
Output
2
8
26

Scoring

\begintabular|c|c|l|
\hline
Subtask & Điểm & Ràng buộc

\hline
1 & 21 & \(1 \le N, Q \le 1000\)

2 & 27 & Cây là một dây chuyền, \(p_i = i\) với mọi \(i\) từ \(1\) đến \(N-1\)

3 & 22 & Mỗi đỉnh là cha của nhiều nhất \(20\) đỉnh con

4 & 30 & Không có ràng buộc bổ sung

\hline
\endtabular

root

Thám hiểm

100 điểm

Nhà khoa học Alex đang thực hiện một cuộc thám hiểm để nghiên cứu các mẫu vật tại \(n\) địa điểm khác nhau. Anh ấy bắt đầu chuyến đi từ địa điểm \(1\). Giữa một số địa điểm có các con đường bộ hai chiều, và Alex biết thời gian cần thiết để đi qua mỗi con đường.

Ngoài ra, giữa mỗi cặp địa điểm còn có một tuyến đường hàng không, nhưng do một sự cố kỹ thuật gần đây, thời gian di chuyển giữa hai địa điểm \(u\) và \(v\) bằng đường hàng không được tính bằng \((u - v)^2\).

Vì Alex không thích bay cho lắm, anh ta chỉ có thể sử dụng tối đa \(k\) chuyến bay trong suốt hành trình của mình. Mục tiêu của Alex là tìm thời gian di chuyển tối thiểu từ địa điểm \(1\) đến mỗi địa điểm khác.

Yêu cầu: Hãy giúp Alex tính toán thời gian di chuyển tối thiểu từ địa điểm \(1\) đến mỗi địa điểm trong số \(n\) địa điểm.

Input

  • Dòng đầu tiên của input chứa ba số nguyên \(n, m, k\) (\(2 \le n \le 10^5, 1 \le m \le 10^5, 0 \le k \le 20\)) lần lượt là số địa điểm, số con đường bộ và số chuyến bay tối đa mà Alex có thể sử dụng.
  • \(m\) dòng tiếp theo mô tả các con đường bộ. Mỗi dòng chứa ba số nguyên \(u, v, w\) (\(1 \le u, v \le n, u \ne v, 1 \le w \le 10^9\)) --- hai địa điểm được kết nối và thời gian di chuyển qua con đường đó. Lưu ý rằng một số cặp địa điểm có thể được kết nối bởi nhiều hơn một con đường.

Output

  • In ra \(n\) số nguyên, số thứ \(i\) là thời gian di chuyển tối thiểu đến địa điểm \(i\).

Example

Test 1

Input
3 1 2
1 3 1
Output
0 1 1 

Test 2

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

Scoring

  • Subtask \(1\) (25% số điểm) : \(k = 0\).
  • Subtask \(2\) (25% số điểm) : \(n, m \leq 50\).
  • Subtask \(3\) (25% số điểm) : Đồ thị có dạng đường thẳng.
  • Subtask \(4\) (25% số điểm) : Không có ràng buộc gì thêm.
Xem thêm