Điều hướng chính

Nhắn tin NQ Coding

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.

Dễ

Tách lấy tên

100 điểm 67% AC 2 đã giải

staffagent

Cho một họ tên đầy đủ (các từ cách nhau đúng một dấu cách, không có dấu cách ở đầu và cuối). Tên gọi là từ cuối cùng của xâu. Hãy in ra tên.

Input

  • Một dòng chứa họ tên, gồm các chữ cái Latinh không dấu và dấu cách.

Output

  • In ra phần tên (từ cuối cùng).

Constraints

  • Độ dài xâu không quá \(10^5\); xâu có ít nhất một từ.

Sample Input 1

Pham Thi Hoa Lan

Sample Output 1

Lan

Sample Input 2

Do Quan

Sample Output 2

Quan
Dễ

Thợ lặn tìm vàng

100 điểm 0% AC 0 đã giải

staffagent

Một thợ lặn phát hiện một xác tàu đắm có \(n\) kho báu. Kho báu thứ \(i\) nằm ở độ sâu \(d_i\) và chứa \(v_i\) đồng vàng. Bình khí nén chỉ đủ cho \(t\) giây dưới nước cho toàn bộ chuyến đi. Mỗi lần lặn, thợ lặn chỉ mang được tối đa một kho báu, và mỗi kho báu chỉ lấy một lần.

Với hằng số nguyên \(w\), thời gian lặn xuống độ sâu \(d\) mất \(d \cdot w\) giây, còn thời gian bơi từ độ sâu \(d\) lên mặt nước mất \(2 \cdot d \cdot w\) giây. Như vậy lấy kho báu thứ \(i\) tốn tổng cộng \(3 \cdot d_i \cdot w\) giây. Tổng thời gian của các lần lặn không được vượt quá \(t\) (thời gian mất trên mặt nước bỏ qua).

Hãy tìm tổng số vàng lớn nhất thợ lặn có thể thu về.

Input

Gồm nhiều bộ dữ liệu cho đến hết file, mỗi bộ có dạng:

  • Dòng đầu chứa hai số nguyên \(t\) và \(w\).
  • Dòng thứ hai chứa số nguyên \(n\).
  • \(n\) dòng tiếp theo, dòng thứ \(i\) chứa hai số nguyên \(d_i\) và \(v_i\).

Các bộ dữ liệu có thể được ngăn cách nhau bởi các dòng trống. Số bộ dữ liệu không vượt quá \(50\).

Output

Với mỗi bộ dữ liệu in ra một dòng chứa số vàng lớn nhất thu được.

Constraints

  • \(1 \le t \le 1000\), \(1 \le w \le 100\)
  • \(1 \le n \le 30\)
  • \(1 \le d_i \le 1000\)
  • \(0 \le v_i \le 1000\)

Sample Input

100 2
4
5 10
3 4
4 6
8 3

60 5
2
2 5
1 1

Sample Output

20
6

Explanation

Bộ 1: chi phí thời gian của các kho báu là \(30, 18, 24, 48\). Chọn kho \(1\), \(2\) và \(3\) tốn \(72 \le 100\) giây và được \(20\) đồng vàng; thêm kho 4 thì vượt quá. Bộ 2: chi phí là \(30\) và \(15\); tổng \(45 \le 60\) nên lấy cả hai, được \(6\) đồng vàng.

Dễ

Dãy số

100 điểm 0% AC 0 đã giải

root

Cho một dãy \(A\) gồm \(n\) số nguyên dương \(A_1, A_2, A_3, ..., A_n\). Có bao nhiêu cặp chỉ số \((i,j)\) thỏa mãn \(1 \leq i < j \leq n\) để tổng \(A_i+A_j\) chia hết cho \(3\).

Input

Dữ liệu vào: Đọc từ tệp DAYSO.INP gồm \(2\) dòng:

  • Dòng đầu tiên chứa số nguyên \(n\) \((2 \leq n \leq 10^5)\).
  • Dòng thứ \(2\) chứa \(n\) số nguyên dương \(A_1, A_2, A_3, ..., A_n\), mỗi số không vượt quá \(10^9\), giữa hai số cách nhau \(1\) dấu cách.

Output

Kết quả: Ghi ra tệp DAYSO.OUT một dòng duy nhất là số cặp tìm được.

Example

Test 1

Input
7
3 1 2 9 5 3 5
Output
6
Note

Giải thích: Với ví dụ trên, ta có 6 cặp (i; j) là (1; 4), (1; 6), (2; 3), (2; 5), (2; 7), (4; 6).

Scoring

  • Có \(70\%\) số điểm có \(n \leq 10^4\).
  • Còn \(30\%\) số điểm còn lại không có ràng buộc gì thêm.
Dễ

Bài 3. Truy vấn trên cây (TREEQUERY)

100 điểm 18% AC 5 đã giải

root

Cho một đồ thị vô hướng có dạng cây, tức là đồ thị gồm \(n\) đỉnh và \(n-1\) cạnh. Các đỉnh được đánh số từ \(1\) đến \(n\), đỉnh thứ \(i\) có trọng số là \(w_i\).

Ví dụ, ta có một cây với gốc là 1:

  • Cây gốc 1 bao gồm các đỉnh \(\{1,2,3,4,5,6,7\}\).
  • Cây con có gốc là 2 bao gồm các đỉnh \(\{2,6,5,4\}\).
  • Cây con có gốc là 3 bao gồm các đỉnh \(\{3,7\}\).

Ta định nghĩa \(S(\mathrm{root},a)\) là tổng trọng số của các đỉnh trong cây con có gốc \(a\), khi cây được định nghĩa với gốc là \(\mathrm{root}\), tức là:

\[ S(\mathrm{root},a)=\sum_{u\in\mathrm{subtree}(a)}w[u]. \]

Bạn hãy trả lời \(q\) truy vấn, mỗi truy vấn thuộc một trong hai dạng sau:

  1. Truy vấn loại 1: 1 a b — Ghi ra giá trị \(S(a,b)\).
  2. Truy vấn loại 2: 2 a b v — Chọn gốc của cây là \(a\), và cập nhật trọng số của các đỉnh \(u\) thuộc cây con có gốc \(b\) theo phép XOR với \(v\), tức là:
\[ w[u]=w[u]\oplus v,\qquad \forall u\in\mathrm{subtree}(b), \]

với \(\oplus\) là phép bitwise XOR trong C++.

Input

Cho trong file TREEQUERY.INP, có cấu trúc:

  • Dòng 1: Chứa số nguyên \(n\), là số đỉnh của cây \((1 \le n \le 10^5)\).
  • Dòng 2: Chứa \(n\) số nguyên \(w_1,w_2,\ldots,w_n\), là trọng số các đỉnh \((0 \le w_i \le 10^9)\).
  • Trên \(n-1\) dòng tiếp theo: Mỗi dòng chứa hai số nguyên \(u,v\) biểu diễn một cạnh giữa đỉnh \(u\) và đỉnh \(v\) của cây \((1 \le u,v \le n)\).
  • Dòng tiếp theo chứa số nguyên \(q\), là số truy vấn \((1 \le q \le 10^5)\).
  • Trên \(q\) dòng tiếp theo, mỗi dòng biểu diễn một truy vấn:
  • Truy vấn loại 1: 1 a b \((1 \le a,b \le n)\) — Ghi ra \(S(a,b)\).
  • Truy vấn loại 2: 2 a b v \((1 \le a,b \le n,\ 1 \le v \le 10^9)\) — Cập nhật trọng số các đỉnh trong cây con gốc \(b\) khi cây có gốc \(a\), theo phép XOR với \(v\).

Output

Ghi ra file TREEQUERY.OUT:

  • Với mỗi truy vấn loại 1, ghi ra một dòng là kết quả \(S(a,b)\).

Example

Test 1

Input
7
1 2 3 4 5 6 7
1 2
1 3
2 4
2 6
3 7
6 5
3
1 1 2
2 1 2 1
1 1 2
Output
17
19

Chú ý: Thời gian thực hiện chương trình tối đa cho mỗi bộ test bất kỳ là không quá 01 giây.

Scoring

  • 20% số test tương ứng với 20% số điểm của bài có \(n,q \le 2000\).
  • 20% số test tương ứng với 20% số điểm của bài không có truy vấn loại 2.
  • 20% số test tương ứng với 20% số điểm ứng với trường hợp mỗi đỉnh trên cây có tối đa hai đỉnh kề với nó.
  • 20% số test tương ứng với 20% số điểm của bài không có \(a=1\).
  • 20% số test còn lại tương ứng với 20% số điểm của bài không có ràng buộc gì thêm.
Xem thêm