Đ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

Cái túi

100 điểm

Có \(N\) đồ vật được đánh số từ \(1\) đến \(N\), đồ vật thứ \(i\) có trọng lượng \(W_i\) và có giá trị là \(V_i\) (\(1 \le i \le N\)).

**Yêu cầu: ** Hãy xác định với cái túi có sức chứa trọng lượng tối đa là \(M\) thì có thể chứa được các đồ vật có tổng giá trị lớn nhất là bao nhiêu.

Input

  • Dòng đầu ghi hai số nguyên dương \(N\) và \(M\) \((N \leq 20, M \leq 10^9)\);
  • Trong \(N\) dòng tiếp theo, dòng thứ \(i\) ghi hai số nguyên dương \(W_i\) và \(V_i\);
  • Các số ghi cách nhau ít nhất một dấu cách và có giá trị không vượt quá \(10^9\).

Output

  • Gồm một dòng ghi duy nhất tổng giá trị lớn nhất tìm được.

Example

Test 1

Input
3 4
1 4
2 5
3 6
Output
10
Note
  • Chọn đồ vật thứ \(1\) và thứ \(3\).

root

Phòng ban

100 điểm

Một công ty công nghệ có \(N\) phòng ban được tổ chức theo dạng cấu trúc cây, với phòng ban số \(1\) là gốc của cây. Mỗi phòng ban tương ứng với một đỉnh của cây. Phòng ban \(i\) có hai thông số đặc trưng:

  • \(a(i)\): Loại hình hoạt động chính của phòng ban.
  • \(b(i)\): Số điểm tài nguyên mà phòng ban có được.

Giám đốc điều hành muốn tối ưu hóa hiệu suất làm việc của từng phòng ban. Nhiệm vụ là, với mỗi phòng ban \(i\), hãy tìm giá trị \(f(u, v)\) lớn nhất giữa hai phòng ban \(u\) và \(v\) nằm trong cây con có gốc là phòng ban \(i\), sao cho phòng ban \(i\) là tổ tiên chung gần nhất của \(u\) và \(v\). Giá trị \(f(u, v)\) được định nghĩa như sau:

$
f(u, v) =
\begin{cases}
0 & \text{nếu } a(u) \neq a(v), \
\sum b(x) & \text{với } x \text{ là các phòng ban nằm trên đường đi từ } u \text{ đến } v.
\end{cases}
$

Lưu ý:

  • \(lca(u, v) = i\) khi và chỉ khi phòng ban \(i\) là tổ tiên chung gần nhất và là tổ tiên sâu nhất của cả hai phòng ban \(u\) và \(v\).
  • Đường đi từ \(u\) đến \(v\) bao gồm tất cả các phòng ban trên cây từ \(u\) đến \(v\).

Input

  • Dòng đầu tiên chứa số nguyên \(N\) \((1 \leq N \leq 10^5)\), số lượng đỉnh trong cây.
  • Dòng thứ hai chứa \(N\) số nguyên \(a(1), a(2), \ldots, a(N)\) \((1 \leq a(i) \leq 10^9)\).
  • Dòng thứ ba chứa \(N\) số nguyên \(b(1), b(2), \ldots, b(N)\) \((0 \leq b(i) \leq 10^9)\).
  • \(N-1\) dòng tiếp theo, mỗi dòng chứa hai số nguyên \(u, v\) \((1 \leq u, v \leq N)\), biểu diễn cạnh nối giữa hai đỉnh \(u\) và \(v\) trong cây.

Output

Với mỗi \(i\) \((1 \leq i \leq N)\), hãy tìm giá trị lớn nhất của \(f(u, v)\) với \(u, v\) là hai phòng ban nằm trong cây con có gốc tại \(i\).

Example

Test 1

Input
8
2 2 3 3 5 2 3 1
5 4 1 3 1 8 1 5
1 3
4 6
8 4
2 3
4 3
1 5
7 5
Output
17 0 16 0 0 0 0 0 
Note

Giải thích ví dụ:

-Với gốc là phòng ban \(1\), \(f(1, 6)=8+3+1+5=17\).

-Với gốc là phòng ban \(3\), \(f(2, 6)=8+3+1+4=16\).

Scoring

  • Có \(30\%\) số test ứng với \(n \le 1000\)
  • Có \(20\%\) số test ứng với \(a(i) \le 10\)
  • \(50\%\) số test còn lại không có ràng buộc gì thêm.

root

Tổng tích OR

100 điểm

Cho một dãy \(n\) số nguyên dương \(a_0, a_1, \ldots, a_{n-1}\).

Với mọi \(U\) thỏa mãn \(0 \leq U < n\): Tính tổng \(a_i \cdot a_j\) với mọi \(0\leq i,j < n, (i\text{ or }j) \leq U\).

Toán tử or ở đây biểu thị cho toán tử nhị phân OR.

Input

  • Dòng đầu chứa số nguyên duy nhất là \(n\) \((1 \leq n \leq 2 \cdot 10^5)\), độ dài mảng \(a\).

  • Dòng thứ hai chứa \(n\) số nguyên dương \(a_0, a_1, \ldots, a_{n-1}\) \((0 < a_{i} \leq 10^7)\).

Output

  • In ra \(n\) số nguyên dương trên cùng một dòng duy nhất. Số thứ \(i\) là đáp án cho \(U = i - 1\) khi chia dư cho \(10^9 + 7\).

Example

Test 1

Input
3
1 2 8
Output
1 9 89 

Scoring

  • Subtask \(1\) (\(30\%\) số điểm): \(n \le 500\).

  • Subtask \(2\) (\(30\%\) số điểm): \(n \le 10^4\).

  • Subtask \(3\) (\(40\%\) số điểm): Không có ràng buộc gì thêm.

root

Khoảng cách từ nguồn

100 điểm

Cho một đồ thị có hướng có \(N\) đỉnh và \(M\) cạnh. Sử dụng thuật toán BFS để tính và in ra khoảng cách (số cạnh) từ đỉnh nguồn \(S\) đến tất cả các đỉnh khác trong đồ thị.

Input

  • Dòng đầu tiên là ba số nguyên dương \(N, M, S\) (\(1 \leq N \leq 10^5, 1 \leq M \leq 10^5, 1 \leq S \leq N\)).
  • \(M\) dòng tiếp theo, mỗi dòng chứa hai số nguyên \(u, v\) mô tả một cạnh.

Output

\(N\) dòng, dòng thứ \(i\) chứa khoảng cách từ đỉnh \(S\) đến đỉnh \(i\). Nếu không có đường đi, in ra -1.

Example

Test 1

Input
5 3 1
1 2
2 3
4 5
Output
0
1
2
-1
-1
Xem thêm