Đ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ễ

Robot

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

staffagent

Một robot cứu hỏa xuất phát tại trạm cứu hỏa \(A\) và cần đến thị trấn \(Z\) để làm nhiệm vụ.
Khoảng cách từ trạm \(A\) đến thị trấn \(Z\) là \(L\) đơn vị, và robot mang theo ban đầu \(P\) đơn vị năng lượng.
Robot tiêu tốn đúng \(1\) năng lượng cho mỗi đơn vị quãng đường di chuyển.

Trên đường đi có \(N\) trạm cung cấp năng lượng, trạm thứ \(i\) nằm cách thị trấn \(Z\) đúng \(D_i\) đơn vị và có thể cung cấp tối đa \(C_i\) đơn vị năng lượng.
Dữ liệu đảm bảo \(D_1 > D_2 > \dots > D_N\).

Robot muốn đến thị trấn càng sớm càng tốt nên chỉ dừng lại để nạp năng lượng khi thật sự cần thiết.
Hãy xác định số trạm ít nhất mà robot buộc phải dừng để có thể đến được thị trấn \(Z\).
Nếu không thể đến nơi, in ra -1.

Input

Dòng đầu tiên chứa số bộ test \(T\) (\(1 \le T \le 5\)).

Mỗi test gồm:

  • Dòng đầu: số nguyên \(N\) (\(1 \le N \le 10^5\)).
  • \(N\) dòng tiếp theo: mỗi dòng chứa hai số \(D_i\) và \(C_i\) (\(1 \le D_i \le 10^6\), \(1 \le C_i \le 1000\)), với \(D_1 > D_2 > \dots > D_N\).
  • Dòng cuối cùng: hai số \(L\) và \(P\) (\(1 \le L \le 10^6\), \(2 \le P \le 10^6\)).

Tổng \(N\) trên tất cả test không vượt quá \(10^5\).

Output

In ra \(T\) dòng, mỗi dòng là số trạm tối thiểu robot phải dừng lại để nạp năng lượng.
Nếu robot không thể đến thị trấn \(Z\), in ra -1.

Scoring

  • Có \(50\%\) số điểm ứng với \(1 \le N \le 100\).
  • \(50\%\) số điểm còn lại có \(100 < N \le 10^5\).

Input

2
3
6 4
4 3
2 6
8 4
1
1 3
5 3

Output

1
-1
Dễ

Số nguyên tố 1

100 điểm 50% AC 3 đã giải

root

Trong ngày thực tập đầu tiên, thầy Hải có một câu đố nho nhỏ cho các học sinh của mình. Cho một số nguyên \(n\), hãy kiểm tra \(n\) có phải là số nguyên tố hay không?

Số nguyên tố là số tự nhiên lớn hơn 1 chỉ có hai ước số dương phân biệt là 1 và chính nó.

Input

  • Gồm một dòng duy nhất là số nguyên \(n (|n| \le 10^{12})\)

Output

  • In ra YES nếu \(n\) là số nguyên tố. Ngược lại in ra NO.

Example

Test 1

Input
9
Output
NO
Dễ

Gọi hàm

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

root

iPrometheus là một lập trình viên. Anh ấy đang phát triển một chương trình lớn bằng ngôn ngữ lập trình Heraclosures, được sáng tạo bởi người bạn Heracles của mình. Chương trình này có \(N\) hàm, mỗi hàm được đánh số từ \(1\) đến \(N\). Mỗi hàm có thể thực thi một số lệnh và thậm chí gọi các hàm khác.

Khi một hàm \(i\) gọi hàm \(j\), toàn bộ thời gian thực thi của hàm \(j\) sẽ được tính vào thời gian thực thi của hàm \(i\). Nếu một hàm không gọi bất kỳ hàm nào, thời gian thực thi của nó chỉ là thời gian cơ bản của chính nó. Để đảm bảo chương trình không gặp lỗi vòng lặp, Prometheus đã thiết kế để không có chu trình nào tồn tại trong các lời gọi hàm.

Mỗi hàm \(i\) có:

  • Thời gian thực thi cơ bản \(B_i\): thời gian cần thiết để thực thi hàm mà không bao gồm thời gian của các hàm khác mà nó gọi.
  • Danh sách các hàm được gọi trực tiếp \(C(i)\): danh sách các hàm mà hàm \(i\) gọi trực tiếp.

Thời gian thực thi tổng cộng của một hàm \(i\) được định nghĩa là:
$
T(i) = B_i + \sum_{j \in C(i)} T(j)
$

Nếu \(C(i)\) rỗng, tức là hàm \(i\) không gọi hàm nào, khi đó \(T(i) = B_i\).

Prometheus muốn thực hiện một số thay đổi và kiểm tra các hàm trong chương trình. Bạn cần viết một công cụ để hỗ trợ anh ấy thực hiện các thao tác sau:

  • Cập nhật: Thay đổi thời gian thực thi cơ bản \(B_i\) của một hàm \(i\) thành một giá trị mới \(V\). Lưu ý rằng việc cập nhật \(B_i\) không ảnh hưởng đến danh sách \(C(i)\) của hàm \(i\).
  • Truy vấn: Tính thời gian thực thi tổng cộng \(T(i)\) của một hàm \(i\) với các thay đổi hiện tại.

Cuối cùng, Prometheus không yêu cầu kết quả riêng cho từng truy vấn mà chỉ cần một giá trị tổng hợp. Nếu có \(q\) truy vấn, hãy tính tổng:
$
\text{Kết quả} = \left( \sum_{k=1}^q k \cdot T(i_k) \right) \mod (10^9 + 7)
$

trong đó \(T(i_k)\) là thời gian thực thi của hàm được truy vấn ở lần thứ \(k\).

Input

Dữ liệu đầu vào bao gồm:

  • Dòng đầu tiên chứa một số nguyên \(N\) \((1 \leq N \leq 8000)\) --- số lượng hàm trong chương trình.
  • Dòng thứ hai chứa \(N\) số nguyên \(B_1, B_2, \dots, B_N\) \((0 \leq B_i \leq 10^9)\) --- thời gian thực thi cơ bản của các hàm.
  • Dòng thứ ba chứa một số nguyên \(M\) \((1 \leq M \leq 8000)\) --- số lượng lời gọi giữa các hàm.
  • Mỗi dòng trong \(M\) dòng tiếp theo chứa hai số nguyên \(F\) và \(G\) \((1 \leq F, G \leq N, F \neq G)\), biểu thị rằng hàm \(F\) gọi trực tiếp hàm \(G\).
  • Dòng tiếp theo chứa một số nguyên \(E\) \((1 \leq E \leq 10^6)\) --- số lượng sự kiện (cập nhật hoặc truy vấn).
  • Mỗi dòng trong \(E\) dòng tiếp theo là một sự kiện:

  • U I V: Cập nhật thời gian thực thi cơ bản của hàm \(I\) thành \(V\) \((0 \leq V \leq 10^9)\).

  • Q J: Truy vấn thời gian thực thi tổng cộng của hàm \(J\) \((1 \leq J \leq N)\).

Bảo đảm rằng:

  • Không có chu trình nào tồn tại trong các lời gọi giữa các hàm.
  • Luôn có ít nhất một truy vấn trong danh sách sự kiện.

Output

In ra một số nguyên duy nhất --- kết quả tổng hợp của tất cả các truy vấn.

Example

Test 1

Input
3
10 20 100
3
1 2
2 3
1 3
3
Q 1
Q 2
Q 3
Output
770
Note

Test \(1\) : \(230\), \(120\), \(100\).

Test \(2\) : \(94\), \(42\), \(42\), \(84\).

Test 2

Input
2
42 10
2
2 1
2 1
5
Q 2
Q 1
U 2 0
Q 1
Q 2
Output
640

Scoring

  • \(25\%\) số test có \(n, m, E \leq 100\).

  • \(25\%\) số test có \(n, m \leq 8000, E \leq 8000\).

  • \(25\%\) số test có \(m = n - 1, F = i, G = i + 1\).

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

Dễ

Trang sức

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

root

Vân có \(N\) đồ trang sức trên kệ được đánh số \(1, 2, \ldots, N\) từ trái sang phải. Đồ trang sức có nhiều loại khác nhau, được biểu thị bằng số nguyên dương. Món đồ thứ \(i\) trên kệ là loại \(A_i\).

Hôm nay Vân sẽ bay ra nước ngoài gặp gia đình và muốn mang theo càng nhiều đồ trang sức càng tốt. Tuy nhiên, vì đang vội nên Vân phải lấy một khoảng đồ trang sức liên tiếp trên kệ. Nghĩa là Vân sẽ chọn hai chỉ số, \(l\) và \(r\), và lấy tất cả các món đồ trang sức được đánh số \(l, l + 1, \ldots, r - 1, r\). Ngoài ra, do các quy tắc về thuế, an ninh sân bay sẽ vứt bỏ tất cả các loại đồ trang sức mà Vân có nhiều hơn \(S\) món trong đồ mang theo.

Ví dụ: giả sử \(S = 2\), Vân mang theo sáu món đồ trang sức: một loại \(0\), hai loại \(1\) và ba loại \(2\). Vân sẽ mất tất cả các nữ trang loại \(2\) ở sân bay!

Yêu cầu: Hãy giúp Vân chọn \(l\) và \(r\) sao cho cô ấy có thể mang được nhiều đồ trang sức nhất cho gia đình mình.

Input

  • Dòng đầu tiên ghi duy nhất một số nguyên \(T \leq 5\) là số lượng trường hợp test. Mỗi nhóm dòng trong số \(T\) nhóm dòng sau bao gồm:
  • Dòng một chứa hai số nguyên dương \(N\) và \(S\) (\(S \leq N \leq 10^5\)).
  • Dòng thứ hai chứa \(N\) số nguyên dương, số thứ \(i\) là \(A_i\) (\(A_i \leq 10^5\)).

Output

  • Ghi ra \(T\) dòng, mỗi dòng ghi một số nguyên là số đồ trang sức tối đa mà Vân có thể mang ra nước ngoài thăm gia đình.

Example

Test 1

Input
1
6 2
1 1 4 1 4 4
Output
4

Scoring

\begin itemize

  • Subtask \(1\) (15 điểm): \(N \le 300\).
  • Subtask \(2\) (15 điểm): \(N \le 1000\).
  • Subtask \(3\) (70 điểm): Không có ràng buộc nào khác.
    \end itemize
Xem thêm