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

Hoán vị

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

root

Cho hai dãy số nguyên dương \(A=\left(a_{1}, a_{2}, \ldots, a_{n}\right)\) và \(B=\left(b_{1}, b_{2}, \ldots, b_{n}\right)\) là hai hoán vị của \(1,2, \ldots, n\). Thực hiện lần lượt \(q\) thao tác, mỗi thao tác được mô tả bằng hai chỉ số \(i, j\ (1 \leq\) \(i, j \leq n)\) gồm hai công việc sau:

  • Thực hiện tráo đổi hai phần tử thứ \(i\) và thứ \(j\) trong dãy \(B\).
  • Tìm một dãy là hoán vị vòng của dãy \(A\) mà số lượng vị trí tương ứng khớp với dãy \(B\) là nhiều nhất, sau đó đưa ra số lượng vị trí khớp nhiều nhất tìm được. Cụ thể, tìm số nguyên không âm \(k\ (0 \leq k \leq n-1)\) để dãy \(\left(c_{1}, c_{2}, \ldots, c_{n}\right)=\left(a_{k+1}, a_{k+2}, \ldots, a_{n}, a_{1}, a_{2} \ldots, a_{k}\right)\) có số lượng vị trí \(i\ (1 \leq i \leq n)\) mà \(c_{i}=b_{i}\) là nhiều nhất.

Yêu cầu: Cho hai dãy \(A, B\) và \(q\) thao tác, với mỗi thao tác đưa ra số lượng vị trí khớp nhiều nhất tìm được.

Input

  • Dòng đầu chứa hai số nguyên dương \(n, q\).
  • Dòng thứ hai chứa \(n\) số nguyên dương \(a_{1}, a_{2}, \ldots, a_{n}\) là một hoán vị của \(1,2, \ldots, n\).
  • Dòng thứ ba chứa \(n\) số nguyên dương \(b_{1}, b_{2}, \ldots, b_{n}\) là một hoán vị của \(1,2, \ldots, n\).

Output

  • Gồm \(q\) dòng, mỗi dòng là số lượng vị trí khớp nhiều nhất tìm được tương ứng với thao tác trong dữ liệu vào.

Example

Test 1

Input
3 2
1 2 3
1 2 3
1 3
2 3
Output
1
3
Note
  • Test \(1\): Dãy \(B\) sau khi đổi chỗ: \((3, 2, 1)\). Hoán vị vòng \((1,2,3)\) khớp được \(1\) vị trí.

  • Test \(2\): Dãy \(B\) sau khi đổi chỗ: \((3,1,2)\). Hoán vị vòng \((3,1,2)\) khớp được \(3\) vị trí.

Scoring

  • Có \(40 \%\) số test của bài có \(n \leq 100 ; q \leq 100\).
  • Có \(30 \%\) số test khác của bài có \(n \leq 10^{5} ; q \leq 100\).
  • Có \(30 \%\) số test còn lại của bài có \(n \leq 10^{5} ; q \leq 10^{5}\).
Dễ

Vòng tròn nguyên tố

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

staffagent

Trên một vòng tròn có \(2n\) ô, các ô được đánh số từ \(1\) đến \(2n\) theo chiều kim đồng hồ (ô \(2n\) nằm cạnh ô \(1\)). Ta cần điền vào mỗi ô một số nguyên từ \(1\) đến \(2n\), mỗi số dùng đúng một lần, sao cho tổng hai số ở hai ô kề nhau luôn là số nguyên tố (kể cả cặp ô \(2n\) và ô \(1\)). Ngoài ra ô số \(1\) luôn phải chứa số \(1\).

Cho \(n\), hãy liệt kê tất cả các cách điền thỏa mãn.

Input

Một số nguyên dương \(n\).

Output

Mỗi dòng in một cách điền: \(2n\) số theo thứ tự từ ô \(1\) đến ô \(2n\), cách nhau một dấu cách. Các cách điền được in theo thứ tự từ điển tăng dần.

Constraints

  • \(1 \le n \le 8\) (với \(n\) lớn hơn, số cách điền quá nhiều nên bị loại khỏi giới hạn).

Sample Input

3

Sample Output

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

Explanation

Với cách đầu tiên: \(1+4=5\), \(4+3=7\), \(3+2=5\), \(2+5=7\), \(5+6=11\), \(6+1=7\), tất cả đều là số nguyên tố.

Dễ

Tháp cát (Bản 1)

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

root

Từ xa xưa, tại vùng đất Sa Ngọc, người dân tôn thờ những ngọn tháp được xây dựng từ cát linh thiêng. Mỗi ngọn tháp là một bảng đá đứng gồm \(n\) tầng và \(m\) cột, trong đó có những ô chứa khối cát thiêng và những ô trống.

Theo truyền thuyết, để khơi dậy nguồn năng lượng từ các tháp, người thực hiện nghi lễ phải làm rơi các khối cát xuống các bàn thờ ở chân cột. Mỗi cột có một bàn thờ riêng, và để hoàn thành nghi lễ, số lượng khối cát rơi xuống mỗi bàn thờ phải đạt ít nhất \(a_i\) khối.

Tuy nhiên, việc làm rơi cát không đơn giản. Khi một khối cát ở ô \((i, j)\) bị đánh thức, nó rơi xuống, đi qua toàn bộ các ô bên dưới trong cùng cột. Trên đường đi, nếu có khối cát nào nằm kề bên theo 4 hướng (trái, phải, trên, dưới), chúng cũng sẽ bị đánh thức và bắt đầu rơi, tạo thành một chuỗi phản ứng dây chuyền.

Trong mỗi lượt hành lễ, bạn chỉ có thể đánh thức một khối cát bất kỳ.

Bạn được giao nhiệm vụ tìm số lượt hành lễ tối thiểu để hoàn tất nghi lễ, tức là để mỗi cột thu đủ số lượng khối cát quy định.

Input

Dòng đầu tiên chứa hai số nguyên dương \(n\) và \(m\) \((1 \le n \cdot m \le 400,000)\) --- số hàng và số cột của bảng tháp cát.

Mỗi dòng trong \(n\) dòng tiếp theo chứa đúng \(m\) ký tự, mô tả trạng thái của bảng. Ký tự "." biểu thị một ô trống, còn ký tự "#" biểu thị một ô chứa cát.

Dòng cuối cùng chứa \(m\) số nguyên không âm \(a_1, a_2, \ldots, a_m\) \((0 \le a_i \le n)\) --- số lượng cát tối thiểu cần phải rơi xuống bàn thờ ở mỗi cột tương ứng.

Lưu ý ở bản này: Đảm bảo rằng \(a_i\) đúng bằng số lượng cát có sẵn trong cột \(i\).

Output

In ra một số nguyên duy nhất --- số lượt đánh thức tối thiểu cần thực hiện để hoàn thành nghi lễ cho toàn bộ tháp.

Example

Test 1

Input
5 7
#....#.
.#.#...
#....#.
#....##
#.#....
4 1 1 1 0 3 1
Output
3
Note

Giải thích test ví dụ:
Các hàng được đánh số từ \(1\) đến \(n\) và khi một ô cát rơi xuống, nó sẽ ảnh hưởng đến những ô thuộc hàng lớn hơn.

Khi đó ta chọn tác động vào ô \((1,1)\), \((1,6)\), và \((2, 4)\).

Dễ

Chia dãy

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

root

Bạn được trao một mảng số nguyên \(d_1, d_2, \dots, d_n\) gồm \(n\) số nguyên. Hãy tưởng tượng bạn đang tham gia một trò chơi số học, nơi bạn cần tìm cách chia mảng này thành ba phần (một số phần có thể rỗng) sao cho mỗi phần tử của mảng thuộc về đúng một trong ba phần và mỗi phần tạo thành một đoạn liên tiếp (có thể rỗng) của mảng ban đầu.

Gọi tổng các phần tử của phần thứ nhất là $sum_1$, tổng các phần tử của phần thứ hai là $sum_2$ và tổng các phần tử của phần thứ ba là $sum_3$. Trong tất cả các cách chia mảng, bạn cần chọn một cách sao cho $sum_1 = sum_3$ và giá trị $sum_1$ lớn nhất có thể.

Cụ thể hơn, nếu phần thứ nhất của mảng chứa $a$ phần tử, phần thứ hai chứa $b$ phần tử và phần thứ ba chứa $c$ phần tử, ta có:
  • \(sum_1 = \sum_{1 \leq i \leq a} d_i\)
  • \(sum_2 = \sum_{a+1 \leq i \leq a+b} d_i\)
  • \(sum_3 = \sum_{a+b+1 \leq i \leq a+b+c} d_i\)

    Tổng của một mảng rỗng được xem là 0.

Input

  • Dòng đầu tiên chứa một số nguyên \(n\) (\(1 \leq n \leq 2 \cdot 10^5\)) --- số phần tử của mảng \(d\).
  • Dòng thứ hai chứa \(n\) số nguyên \(d_1, d_2, \dots, d_n\) (\(1 \leq d_i \leq 10^9\)) --- các phần tử của mảng.

Output

  • In ra một số nguyên duy nhất --- giá trị lớn nhất có thể của \(sum_1\), thỏa mãn điều kiện \(sum_1 = sum_3\).

    Rõ ràng, luôn tồn tại ít nhất một cách chia hợp lệ (sử dụng \(a = c = 0\) và \(b = n\)).

Example

Test 1

Input
5
1 3 1 1 4
Output
5
Note

Chú thích: Dấu \(\sum\) trong công thức trên biểu thị tổng của một dãy số. Ví dụ, \(\sum_{i=3}^{5} d_i\) có nghĩa là \(d_3 + d_4 + d_5\).

Test 2

Input
5
1 3 2 1 4
Output
4

Test 3

Input
3
4 1 2
Output
0

Scoring

  • Có \(30\%\) số test tương ứng với \(30\%\) số điểm có \(n \leq 100\).
  • Có \(30\%\) số test tương ứng với \(30\%\) số điểm có \(n \leq 1000\).
  • \(40\%\) số test tương ứng với \(40\%\) số điểm còn lại không có ràng buộc gì thêm.
Xem thêm