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

Dễ

Bắn súng

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

staffagent

Trong một buổi tập bắn súng, có \(N\) tấm bia được xếp thành một hàng dọc, đánh số từ \(1\) tới \(N\).
Độ bền ban đầu của tấm bia thứ \(i\) là \(A_i\).

Một tấm bia được coi là bị phá huỷ nếu độ bền của nó giảm xuống nhỏ hơn hoặc bằng \(0\) (khi đó coi độ bền của tấm bia là \(0\)).

Xạ thủ được quyền chọn một loại đạn có sức công phá \(X\) (với \(X\) là số nguyên dương) và dùng xuyên suốt cho toàn bộ buổi tập.

Mỗi lần bắn:

  • Viên đạn trúng tấm bia đầu tiên chưa bị phá huỷ, tức là tấm bia có chỉ số nhỏ nhất \(i\) sao cho \(A_i>0\).
  • Do đạn có tính xuyên phá, viên đạn gây ảnh hưởng lên tấm bia \(i\) và các tấm bia phía sau nó. Với mọi \(j\ge i\), độ bền của tấm bia \(j\) bị giảm một lượng $$ max(0,\;X-(j-i)^2). $$

Ví dụ minh hoạ

Với \(X=5\), có \(6\) tấm bia với độ bền lần lượt là \([0,2,5,0,1,2]\).
Viên đạn đầu tiên trúng vào tấm bia thứ \(2\) (vì tấm \(1\) đã có độ bền bằng \(0\)), và gây ảnh hưởng lên các tấm bia \(2,3,5,6\) (tấm \(4\) có độ bền bằng \(0\)).
Lượng độ bền bị giảm được tính như sau:

  • Tấm bia thứ \(2\): \(\max(0,\,5-(2-2)^2)=\max(0,\,5-0^2)=5\).
  • Tấm bia thứ \(3\): \(\max(0,\,5-(3-2)^2)=\max(0,\,5-1^2)=4\).
  • Tấm bia thứ \(5\): \(\max(0,\,5-(5-2)^2)=\max(0,\,5-3^2)=0\).
  • Tấm bia thứ \(6\): \(\max(0,\,5-(6-2)^2)=\max(0,\,5-4^2)=0\).

Vậy sau lượt bắn này, độ bền của các tấm bia là \([0,0,1,0,1,2]\).

Xạ thủ dừng lại khi một trong hai điều kiện xảy ra:

  • Tất cả tấm bia đã bị phá huỷ; hoặc
  • Đã bắn \(K\) lần.

Hãy tìm giá trị nhỏ nhất của \(X\) sao cho xạ thủ có thể phá huỷ toàn bộ \(N\) tấm bia khi bắn không quá \(K\) lần.

Input

Dòng đầu tiên chứa hai số nguyên dương \(N, K\) \((N\le 2\cdot 10^5,\; K\le 10^9)\).

Dòng thứ hai chứa \(N\) số nguyên dương \(A_1,A_2,\dots,A_N\) \((A_i\le 10^9)\).

Output

In ra một số nguyên dương là giá trị nhỏ nhất của \(X\).

Ví dụ

| standard input | standard output |
|—|—|
| 6 3 6 7 1 3 2 1 | 5 |
| 3 1 3 7 3 | 8 |

Ràng buộc

  • Subtask 1 (30% số điểm): \(N,K \le 30,\; A_i \le 30\).
  • Subtask 2 (20% số điểm): \(K = 1\).
  • Subtask 3 (30% số điểm): \(N \le 1000\).
  • Subtask 4 (20% số điểm): không có ràng buộc gì thêm.
Dễ

NHỊ PHÂN

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

root

Máy tính dùng dãy bít hay còn gọi là dãy nhị phân chỉ bao gồm hai kí hiệu \(0\) và \(1\) để biểu diễn các số trong tính toán. Em hãy viết chương trình giúp máy tính chuyển một số nguyên dương \(N\) (hệ thập phân) sang dãy nhị phân (hệ nhị phân) với \(1 \leq N \leq 10^9\).

Input

Dữ liệu vào: Từ tệp văn bản nhiphan.inp chứa duy nhất số nguyên dương N.

Output

Dữ liệu ra: Ghi ra tệp văn bản nhiphan.out chứa dãy nhị phân.

Example

Test 1

Input
12
Output
1100

Scoring

  • \(75\%\) số test tương ứng \(75\%\) số điểm với \(1 \leq N \leq 10^6\)
  • \(25\%\) số test tương ứng \(25\%\) số điểm với với \(10^6 \leq N \leq 10^9\)
Dễ

Dãy số hai phía

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

root

Một dãy số gồm \(M\) phần tử \(a_1, a_2, \dots, a_M\) được gọi là dãy số hai phía nếu thoả mãn đồng thời các điều kiện sau:

  • \(M\) chẵn, khi đó chia dãy thành hai phần \(\{a_1, a_2, \dots, a_{M/2}\}\) và \(\{a_{M/2+1}, \dots, a_M\}\);
  • Các phần tử ở mỗi phần có giá trị bằng nhau, tức là \(a_1 = a_2 = \dots = a_{M/2}\) và \(a_{M/2+1} = \dots = a_M\);
  • Giá trị của hai phần phải khác nhau, tức là \(a_1 \ne a_M\).

Ví dụ:

  • Là dãy số hai phía: \(\{0,0,0,1,1,1\}\), \(\{1,1,2,2\}\), …
  • Không phải dãy hai phía: \(\{1,1,0\}\), \(\{0,0,2,1\}\), \(\{2,2\}\), …

Cho dãy số gồm \(N\) phần tử, mỗi phần tử nhận một trong ba giá trị \(0, 1, 2\) và số nguyên dương \(K\).

Yêu cầu. Hãy thay đổi không quá \(K\) phần tử của dãy số (mỗi phần tử được đổi thành một trong ba giá trị \(0, 1, 2\)) sao cho tồn tại một dãy con liên tiếp là dãy số hai phía có độ dài lớn nhất. In ra độ dài lớn nhất đó.

\InputFile

  • Dòng đầu tiên chứa hai số nguyên \(N, K\) \((1 \le K \le N \le 10^5)\).
  • Dòng thứ hai chứa \(N\) số, mỗi số nhận một trong ba giá trị \(0\), \(1\) hoặc \(2\) mô tả dãy số ban đầu.

\OutputFile

  • Một số nguyên duy nhất là độ dài lớn nhất của dãy số hai phía tìm được sau khi thay đổi không quá \(K\) số của dãy đã cho.

\Examples
\beginexample
\exmp
7 3
2 1 2 0 0 2 1

6

\exmp
4 2
1 1 0 0

4

\endexample

\Note
Ở ví dụ thứ nhất, có thể đổi dãy thành \(2\;2\;2\;0\;0\;0\;1\) (hoặc \(1\;1\;1\;0\;0\;0\;1\)); khi đó \(6\) phần tử đầu tạo thành một dãy số hai phía có độ dài \(6\).

Ở ví dụ thứ hai, dãy đã là dãy hai phía nên không cần thay đổi phần tử nào.

\Scoring

  • (\(50\%\)) \(1 \le K \le N \le 10^2\);
  • (\(30\%\)) \(1 \le K \le N \le 10^3\);
  • (\(20\%\)) Không có ràng buộc thêm.

\endproblem

Dễ

Bài 4 : Pháo hoa (4.0 điểm)

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

root

Đêm Giao thừa năm nay, bác VCB một nghệ nhân pháo hoa lão làng muốn tạo ra màn trình diễn ánh sáng chưa từng có để chào đón năm mới. Bác VCB sở hữu một dây pháo hoa thần kì. Ban đầu, dây pháo hoa chỉ có một đốm sáng khởi nguồn mang năng lượng là \(0\). Quy trình kích hoạt dây pháo diễn ra qua \(Q\) bước, được đánh số từ \(1\) đến \(Q\). Tại bước thứ \(i\), một trong hai sự kiện sau sẽ xảy ra:

  • 1 x: Bác VCB chọn một đốm mang năng lượng \(x\) đang có trên dây. Bác gắn thêm một đốm sáng mới mang năng lượng đúng bằng số thứ tự của bước hiện tại \(i\) vào phía sau đốm sáng \(x\).
  • 2 x y: Bác VCB chọn hai đốm sáng mốc là \(x\) và \(y\) đang tồn tại trên dây. Tất cả các đốm sáng nằm ở giữa \(x\) và \(y\) sẽ đồng loạt nổ tung, tạo thành chùm sáng rực rỡ và sau đó biến mất vĩnh viễn khỏi dây pháo nhưng hai mốc \(x\) và \(y\) vẫn giữ nguyên. Độ rực rỡ của màn nổ này bằng tổng năng lượng của các đốm sáng vừa bị xóa.

Bạn là trợ lý đắc lực của bác VCB, hãy giúp bác tính toán độ rực rỡ của từng màn "Bùng nổ" để đảm bảo chương trình diễn ra hoàn hảo nhất nhé!

Input

Vào từ tệp văn bản FIREWORK.INP theo cấu trúc:

  • Dòng đầu tiên chứa số nguyên dương \(Q\) \((1 \le Q \le 5 \times 10^5)\) là số lượng truy vấn
  • \(Q\) dòng tiếp theo, dòng thứ \(i\) mô tả sự kiện ở bước thứ \(i\) theo định dạng:

  • 1 x: Sự kiện loại 1 \((0 \le x < i)\)

  • 2 x y: Sự kiện loại 2 \((x \neq y)\)

Output

Ghi vào tệp FIREWORK.OUT với mỗi sự kiện loại 2 hãy in ra độ rực rỡ.

Example

Test 1

Input
4
1 0
1 1
1 1
2 0 2
Output
4
Note

Giải thích test ví dụ thứ nhất:

  • Ban đầu: \(A = (0)\).
  • \(i = 1\): 1 0 \(\rightarrow\) chèn 1 sau 0. \(A = (0, 1)\).
  • \(i = 2\): 1 1 \(\rightarrow\) chèn 2 sau 1. \(A = (0, 1, 2)\).
  • \(i = 3\): 1 1 \(\rightarrow\) chèn 3 sau 1. \(A = (0, 1, 3, 2)\).
  • \(i = 4\): 2 0 2 \(\rightarrow\) Xóa giữa 0 và 2. Đoạn giữa là \((1, 3)\). Tổng bằng \(1 + 3 = 4\). \(A\) trở thành \((0, 2)\).

Test 2

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

Scoring

  • Có \(20\%\) số test ứng với \(20\%\) số điểm của bài với \(Q \le 500\);
  • Có \(30\%\) số test ứng với \(30\%\) số điểm của bài với \(Q \le 5 \times 10^3\);
  • Có \(20\%\) số test ứng với \(20\%\) số điểm của bài với chỉ có sự kiện loại 2;
  • Có \(30\%\) số test ứng với \(30\%\) số điểm của bài không có ràng buộc gì thêm.
Xem thêm