Trại hè Phương Nam 2024 - Từ an toàn

remyvnkhiemtruong

Phương là một người thích sự độc đáo, anh ta rất không thích sự lặp lại, ngay cả khi nó xuất hiện trong các cuộc trò chuyện hàng ngày. Phương cảm thấy khó chịu khi phải dùng các từ có quá nhiều chữ cái lặp lại. Cụ thể với một từ W bất kì, cậu định nghĩa F(W) là độ khó chịu của từ đó. F(W) được tính bằng tổng của bình phương số lần xuất hiện trong W với mỗi chữ cái. Ví dụ với W = "hello" có 2 chữ cái 'l', 1 chữ cái 'h', 1 chữ cái 'e' và 1 chữ cái 'o' có độ khó chịu là F(W) = 2^2 + 1^2 + 1^2 + 1^2 = 7.

Phương chỉ muốn sử dụng những từ an toàn, nghĩa là những từ có độ khó chịu nhỏ hơn hoặc bằng một số nguyên K cho trước.

Yêu cầu: Phương có một xâu S độ dài N chỉ gồm chữ cái in thường (từ 'a' đến 'z'). Hãy giúp Phương đếm số lượng xâu con là từ an toàn của S.

Nhắc lại, một xâu con của một xâu S cho trước là một xâu thu được khi xóa một số ký tự liên tiếp nhau (hoặc không xóa) ở đầu xâu S và một số ký tự liên tiếp nhau (hoặc không xóa) ở cuối xâu S. Ví dụ "olp" hay "psou" là xâu con của "olpsouth" trong khi "suh" thì không. Hai xâu con được coi là khác nhau nếu số lượng ký tự bị xóa ở đầu xâu khác nhau hoặc số lượng ký tự bị xóa ở cuối xâu khác nhau.

Input, Output

Input: (WORD.INP)

Vào từ file văn bản WORD.INP:

  • Dòng thứ nhất chứa hai số nguyên N và K lần lượt là độ dài của xâu S và giới hạn của từ an toàn (1 \le N \le 2 000 000, 1 \le K \le 10^{18}).
  • Dòng thứ hai chứa một xâu độ dài N chỉ gồm các chữ cái in thường mô tả xâu S.

Các số trên cùng một dòng cách nhau bởi dấu cách.

Output: (WORD.OUT)
  • Ghi ra file văn bản WORD.OUT một số nguyên duy nhất là số lượng xâu con của S là từ an toàn.

Sample

Subtask
  • Có 20\% số test ứng với 20\% số điểm của bài thoả mãn: N \le 100.
  • 20\% số test khác ứng với 20\% số điểm của bài thoả mãn: N \le 1000.
  • 20\% số test khác ứng với 20\% số điểm của bài thoả mãn: N \le 10 000.
  • 20\% số test khác ứng với 20\% số điểm của bài thoả mãn: N \le 200 000.
  • 20\% số test còn lại ứng với 20\% số điểm của bài: Không có ràng buộc gì thêm.

Dữ liệu (DHBB 2023)

Sunlight

Dữ liệu tài chính của một công ty trong n ngày được biểu diễn bằng một dãy số t_1,t_2,\dots,t_n, trong đó t_i\ (1\le i\le n) là lượng tiền thu về của ngày thứ i. Lãnh đạo công ty thường xuyên yêu cầu thống kê số liệu về tổng tiền lớn nhất thu được của hai ngày liên tiếp trong các ngày từ ngày L đến ngày R\ (L<R), nghĩa là cần tìm giá trị lớn nhất trong các giá trị (t_i+t_{i+1}) với L\le i<R.

Một nhân viên đã truy cập trái phép dữ liệu của công ty và trước mỗi lần lãnh đạo công ty yêu cầu thống kê số liệu, nhân viên sẽ tìm cách đảo ngược một đoạn dữ liệu nào đó trong các ngày từ ngày L đến ngày R với mục đích khi thống kê dữ liệu trong đoạn từ ngày L đến ngày R thì giá trị trả về càng lớn càng tốt. Vi dụ, nếu đảo ngược đoạn từ ngày i đến ngày j\ (1\le L\le i\le j\le R\le n) trên dữ liệu ban đầu t_1,t_2,\dots,t_i,t_{i+1},\dots,t_j\dots,t_n thì dữ liệu thay đổi là t_1,t_2,\dots,t_j,t_{j-1},\dots,t_i\dots,t_n. Sau khi thống kê số liệu xong, người này sẽ lại thay đổi dữ liệu như ban đầu.

Yêu cầu: Cho biết dữ liệu ban đầu là t_1,t_2,\dots,t_n và q lần yêu cầu thống kê dữ liệu, hãy cho biết số liệu thống kê trả về khi bị can thiệp vào dữ liệu.

Input, Output và Subtasks

Input

Vào từ thiết bị vào chuẩn (bàn phím) có khuôn dạng:

  • Dòng đầu chứa hai số nguyên dương n,q;
  • Dòng thứ hai chứa n số nguyên không âm t_1,t_2,\dots,t_n\ (t_i\le 10^9);
  • Dòng thứ k\ (1\le k\le q) trong q dòng sau, mỗi dòng chứa hai số nguyên mô tả yêu cầu thống kê dữ liệu L,R\ (1\le L\le R\le n).
Output

Ghi ra thiết bị ra chuẩn (màn hình) gồm q dòng, mỗi dòng chứa một số nguyên là giá trị mà lãnh đạo công ty nhận được khi yêu cầu thống kê dữ liệu tương ứng trong file dữ liệu vào.

Scoring
  • Subtask 1 (50 điểm): n,q\le 50
  • Subtask 2 (25 điểm): n,q\le 5000
  • Subtask 3 (25 điểm): n,q\le 10^5

Sample

Input
5 2
5 2 3 1 3
1 5
4 5
Output
8
4
Note

Với yêu cầu thống kê thứ nhât, đảo ngược đoạn từ ngày 1 đến ngày 2 đề có dữ liệu mới: 2 5 3 1 3, kết quả thống kê được là 8.
Với yêu cầu thống kê thứ hai, đào ngược đoạn từ ngày 4 đến ngày 5 đề có dữ liệu mới 5 2 3 3 1, kết quả thống kê được là 4.

Quản lý ngày công (Huế (TP Huế) 2023)

Đề bài: Đề thi được đính kèm trong tệp PDF bên dưới.

  • Tệp vào: DAY.INP
  • Tệp ra: DAY.OUT
  • Thời gian chạy: 1.0s
  • Bộ nhớ: 1024MB

Thời gian (Hà Nội 2023)

Đề bài: Đề thi được đính kèm trong tệp PDF bên dưới.

  • Tệp vào: TG.INP
  • Tệp ra: TG.OUT
  • Thời gian chạy: 1.0s
  • Bộ nhớ: 1024MB

Liên tiếp bằng nhau (Cần Thơ 2023)

Đề bài: Đề thi được đính kèm trong tệp PDF bên dưới.

  • Tệp vào: LTBN.INP
  • Tệp ra: LTBN.OUT
  • Thời gian chạy: 1.0s
  • Bộ nhớ: 1024MB

Chọn số (Kon Tum 2024)

Đề bài: Đề thi được đính kèm trong tệp PDF bên dưới.

  • Tệp vào: CHONSO.INP
  • Tệp ra: CHONSO.OUT
  • Thời gian chạy: 1.0s
  • Bộ nhớ: 1024MB

Mua bút (Bình Dương 2024)

Đề bài: Đề thi được đính kèm trong tệp PDF bên dưới.

  • Tệp vào: Bàn phím
  • Tệp ra: Màn hình
  • Thời gian chạy: 1.0s
  • Bộ nhớ: 1024MB

TLEoj Contest #02 - Nhảy về không (bản khó)

Sunlight, huyhau6a2

Bạn được cho một số nguyên dương n. Với mỗi thao tác, bạn trừ n cho tổng các chữ số của nó. Đếm số thao tác cần thiết để có n = 0.
Bạn phải trả lời q truy vấn như vậy.

P/s: Bài này có giới hạn bộ nhớ là 600000KB (600 nghìn kilobytes).

Input, Output và Subtasks

Input: (bàn phím)
  • Dòng đầu tiên là số nguyên dương q \le 10^5.
  • q dòng tiếp theo, mỗi dòng là một số nguyên dương n \le 10^{18}.
Output: (màn hình)
  • Gồm q dòng, dòng thứ i là kết quả truy vấn thứ i.
Subtasks
  • Subtask 1 (12\%): q = 1,n\le 10^9.
  • Subtask 2 (12\%): n \le 10^5.
  • Subtask 3 (16\%): n \le 10^6.
  • Subtask 4 (16\%): n \le 10^8.
  • Subtask 5 (24\%): n \le 10^9.
  • Subtask 6 (20\%): Không có giới hạn gì thêm.

Sample

Input (bàn phím)
3
18
19
20
Output (màn hình)
2
2
3
Notes
  • Ở testcase đầu tiên, 18 - 9 = 9 và 9 - 9 = 0.
  • Ở testcase thứ hai, 19 - 10 = 9 và 9 - 9 = 0.
  • Ở testcase thứ ba, 20 - 2 = 18, 18 - 9 = 9 và 9 - 9 = 0.

TLEoj Cup Final Day 1 - Bảng trắng đen

Sunlight

Bạn được cho hai dãy số nguyên a_1, a_2, ..., a_n và b_1, b_2, ..., b_m. Bạn cần tạo ra một bảng n \times m gồm các ô màu đen hoặc màu trắng, sao cho hàng thứ i có đúng a_i ô đen, và cột thứ i có đúng b_i ô đen.

Input, Output và Subtask
Input (WBB.inp)
  • Dòng đầu tiên gồm một số nguyên dương t là số trường hợp cần giải quyết (t \le 10).
  • t nhóm dòng tiếp theo, mỗi nhóm gồm ba dòng với format như sau:
    • Dòng đầu tiên gồm hai số nguyên dương n, m (1 \le n, m \le 1000).
    • Dòng thứ hai gồm n số nguyên a_1, a_2, ..., a_n (a_i \le m).
    • Dòng thứ ba gồm m số nguyên b_1, b_2, ..., b_m (b_i \le n).
    • Dữ liệu đầu vào đảm bảo a_1 + a_2 + ... + a_n = b_1 + b_2 + ... + b_m.
Output (WBB.out)
  • In ra kết quả của các trường hợp cần giải quyết. Nếu không tồn tại kết quả in ra -1, ngược lại in ra kết quả gồm n dòng, mỗi dòng gồm m ký tự 0 hoặc 1, Ô ở hàng i cột j là ô đen khi và chỉ khi ký tự thứ j ở hàng i là số 1.
  • Nếu có nhiều kết quả đúng, bạn có thể in ra kết quả bất kỳ.
Subtask
  • 20\% số điểm có m, n \le 4.
  • 20\% số điểm khác có m \le 2.
  • 20\% số điểm khác có a_i \le 1.
  • 20\% số điểm khác có a_i \le 2.
  • 20\% số điểm khác không có giới hạn gì thêm.
Sample 1
Input (WBB.inp)
2
4 5
1 3 1 3
1 2 2 1 2
2 3
2 0
2 0 0
Output (WBB.out)
00001
01011
00100
11100
-1

TLE-oj Cup Round 2 - GCD tổng tích

Sunlight

Bạn được cho một số nguyên p. Ban đầu p=1, bạn phải thực hiện q truy vấn, mỗi truy vấn có dạng sau:

  • + w: tăng số p lên w đơn vị, lưu ý w có thể âm.
  • * w: nhân số p cho w.

Với mỗi truy vấn, bạn cần in ra giá trị gcd(p, a) với a là một số nguyên dương cho trước.

Input, Output và Subtasks

Input (GCDSPR.inp)
  • Dòng đầu tiên gồm hai số nguyên dương a, q (a\le 10^{18}, q \le 10^5).
  • q dòng tiếp theo, dòng thứ 1 + i gồm một ký tự c_i và số nguyên w_i (|w_i| \le 10^{18}, mô tả một truy vấn.
Output (GCDSPR.out)
  • Gồm q dòng, mỗi dòng là kết quả của mỗi truy vấn.
Subtasks
  • Subtask 1 (5\%): c_i = + và q, |w_i| \le 10^4.
  • Subtask 2 (5\%): c_i = + và |w_i| \le 10^9.
  • Subtask 3 (10\%): a | w_i (a là ước của w_i).
  • Subtask 4 (10\%): |p| \le 10^{18} sau mọi truy vấn.
  • Subtask 5 (15\%): c_i = *.
  • Subtask 6 (15\%): c_i = +.
  • Subtask 7 (20\%): a \le 10^9.
  • Subtask 8 (20\%): Không có giới hạn gì thêm.

Sample

Input (GCDSPR.inp)
12 5

* 2
+ 1
* 2
* 4
+ -4
Output (GCDSPR.out)
2
3
6
12
4
Notes
  • Ban đầu p = 1.
  • Sau khi thực hiện truy vấn đầu tiên, p = 2, gcd(2, 12) = 2.
  • Sau khi thực hiện truy vấn thứ hai, p = 3, gcd(3, 12) = 3.
  • Sau khi thực hiện truy vấn thứ ba, p = 6, gcd(6, 12) = 6.
  • Sau khi thực hiện truy vấn thứ tư, p = 24, gcd(24, 12) = 12.
  • Sau khi thực hiện truy vấn thứ năm, p = 20, gcd(20, 12) = 4.

TLEoj Contest #03 - Mảng xor

huyhau6a2

Bạn được cho một dãy số a gồm n phần tử. Dãy số b được tạo bằng cách như sau:

  • b_1=a_1\oplus a_2
  • b_2=a_2\oplus a_3
  • b_3=a_3\oplus a_4
  • \dots
  • b_{n-1}=a_{n-1}\oplus a_n
  • b_n=a_n\oplus a_1

Trong đó, \oplus là thao tác bit XOR. Bạn có thể đọc tại đây

Bạn được cho dãy số b, nhiệm vụ của bạn là tìm một dãy số a thỏa mãn điều kiện sao cho thứ tự từ điển của dãy là nhỏ nhất.

Một dãy số a được coi là có thứ tự từ điển nhỏ hơn dãy số b khi tồn tại vị trí i mà:

  • Với mọi vị trí j<i thì a_j=b_j
  • a_i<b_i

Input, Output và Subtasks

Input
  • Dòng thứ nhất gồm 1 số t là số testcase (1\le t\le 10^4)
  • Sau đó là t block được định dạng như sau:
    • Dòng đầu tiên gồm 1 số n (2\le n\le 10^5)
    • Dòng tiếp theo gồm n số b_1,b_2,\dots,b_n (0\le b_i<2^{30})
  • Dữ liệu đảm bảo tổng n trong tất cả testcase không quá 2\times 10^5
Output
  • Xuất ra t dòng được định dạng như sau:
    • Nếu không có dãy thỏa mãn, xuất -1
    • Ngược lại, xuất ra dãy a thỏa mãn có thứ tự từ điển nhỏ nhất, các giá trị được cách nhau bởi 1 dấu cách

Sample

Input
3
3
1 2 3
3
1 0 0
10
3 6 4 5 2 4 5 14 1 8
Output
0 1 3
-1
0 3 5 1 4 6 2 7 9 8

TLEOJ Contest #14 - Pride Paths

kitngao

Có ai ở đây biết tháng 6 này là tháng dành cho người thuộc nhóm \text{LGBT+} không? Giờ thì bạn biết rồi đấy.
Là một con người theo dõi xã hội phương Tây trong nhiều năm, đó cũng là một phần vinh dự của tôi khi được làm một trong những khán giả xem những người thuộc nhóm \text{LGBT+} diễn hề trong những ngày này. Và có cách gì tốt hơn khi làm điều đó khi gắn nó vào một thứ không liên quan gì tới tháng này nhỉ?

Cho một đồ thị gồm n đỉnh và m cạnh vô hướng, cạnh thứ i nối hai đỉnh u_i và v_i.

Đỉnh thứ i chỉ mang đúng một màu, được chọn từ 26 mã màu có sẵn có thể tô lên đồ thị, được đánh dấu từ A đến Z.

Nhận thấy lá cờ mà nhóm \text{LGBT+} vẽ ra cho từng nhóm người có ba dải màu trên từng lá cờ không? Cho một bộ ba mã màu khác nhau z_1 \ne z_2 \ne z_3, tạo thành một xâu Z, cũng như cách lá cờ đó được tô màu vậy. Xác định xem có tồn tại một tập hợp các điểm a_1, a_2 ,a_3 ,..., a_{k - 1}, a_k với chỉ số khác nhau đôi một thỏa mãn rằng:

  • Trong đồ thị con chỉ chứa các đỉnh a_1, a_2, ..., a_{k - 1}, a_k và các cạnh nối giữa hai đỉnh bất kì nằm trong tập này, tồn tại ít nhất một cách di chuyển trên đồ thị đó giữa hai cặp đỉnh bất kì.
  • Màu được tô ở đỉnh a_i chỉ có thể là z_1 hoặc z_2 hoặc z_3, với mọi 1 \le i \le k.
  • Mỗi màu trong số ba màu z_1, z_2, z_3 phải được tô lên ít nhất một trong số k điểm trong tập.

\text{Input} PPS.inp

  • Dòng một gồm ba số n, m (1 \le n \le 10^5; n - 1 \le m \le \text{min}⁡(5*10^5,\frac{n(n-1)}{2}), thể hiện số lượng đỉnh và số lượng cạnh của đồ thị, và q (1 \le q \le 15600), thể hiện số lượng truy vấn.
  • Dòng thứ hai gồm một xâu S được đánh số từ 1 đến n, chỉ gồm các kí tự \text{Latin} hoa, với S[i] thể hiện mã màu của đỉnh thứ i (với 1 \le i \le n).
  • m dòng tiếp theo, dòng thứ i gồm hai số u_i, v_i (1 \le u_i \ne v_i \le n), thể hiện rằng tồn tại một cạnh hai chiều nối giữa hai đỉnh u_i và v_i trong đồ thị.
  • q dòng cuối cùng, mỗi dòng gồm một xâu kí tự Z có đúng ba kí tự \text{Latin} hoa, thể hiện một truy vấn. Xâu Z đảm bảo rằng z_1 \ne z_2 \ne z_3.
  • Dữ liệu trong \text{Input} được đảm bảo rằng giữa hai điểm có không quá một cạnh nối giữa chúng và tồn tại ít nhất một cách di chuyển giữa một điểm bất kì tới điểm còn lại.

\text{Output} PPS.out

  • Với mỗi truy vấn, in ra \text{YES} / \text{NO} đối với câu hỏi trên đề với xâu kí tự Z của mỗi truy vấn.

\text{Scoring}

  • Subtask \text{#}1 (50\% số điểm): n \le 26; các S[i] khác nhau đôi một.
  • Subtask \text{#}2 (30\% số điểm): m = n - 1.
  • Subtask \text{#}3 (20\% số điểm): Không có điều kiện gì thêm.

\text{Examples}

\text{Test #}1

\text{Input}

6 7 3
ABDEBC
1 2
5 3
1 3
2 3
5 2
4 2
5 6
ABC
AEC
AZC

\text{Output}

YES
NO
NO
\text{Explanations}

Ở testcase \text{#}2 và \text{#}3, không tồn tại một bộ a_i phù hợp.
Ở testcase \text{#}1, bộ a_i phù hợp và duy nhất phù hợp là [1; 2; 5; 6].

Bộ đỉnh này thỏa mãn vì tồn tại một cách di chuyển giữa các cặp đỉnh (1; 2), (1; 5), (1; 6), (2; 5), (2; 6), (5; 6), và màu được tô ở bốn đỉnh này là \text{A}, \text{B} (ở đỉnh 2 và 5), và \text{C}.

RÚT GỌN PHÂN SỐ (Đắk Lắk 2023)

Đề bài: Đề thi được đính kèm trong tệp PDF bên dưới.

  • Tệp vào: RUTGON.INP
  • Tệp ra: RUTGON.OUT
  • Thời gian chạy: 1.0s
  • Bộ nhớ: 1024MB

TLE-oj Cup Round 9 - Tổng chữ số

Sunlight

Cho số nguyên dương n. Tính tổng các chữ số của các số từ 1 đến n.

Input, Output và Subtasks

Input: (SUMDIGIT.inp)
  • Một dòng duy nhất gồm số nguyên dương n.
Output: (SUMDIGIT.out)
  • In ra kết quả bài toán.
Subtasks
  • Subtask 1 (50\%): n \le 10^{7}.
  • Subtask 2 (20\%): n \le 10^{8}.
  • Subtask 3 (30\%): n \le 10^{16}.

Sample

Input (SUMDIGIT.inp)
9
Output (SUMDIGIT.out)
45
Note

1 + 2 + 3 + ... + 9 = 45..

Tọa độ (TS10 QNi 2023)

huyhau6a2

Rô bốt thám hiểm sao Hỏa đang ở điểm có tọa độ (0,0) nhận được dòng lệnh điều khiển từ Trái Đất. Dòng lệnh chỉ chứa các ký tự thuộc tập ký tự {E,S,W,N}, mỗi ký tự là một lệnh di chuyển với quãng đường bằng 1 đơn vị độ dài. Lệnh E di chuyển về hướng Đông, tức là nếu rô bốt đang ở tọa độ (x,y) thì sau khi thực hiện lệnh E rô bốt sẽ ở tọa độ (x+1,y). Lệnh S di chuyển về hướng Nam, tức là nếu rô bốt đang ở tọa độ (x,y) thì sau khi thực hiện lệnh S rô bốt sẽ ở tọa độ (x,y-1). Lệnh W di chuyển về hướng Tây, tức là nếu rô bốt đang ở tọa độ (x,y) thì sau khi thực hiện lệnh W rô bốt sẽ ở tọa độ (x-1,y). Lệnh N di chuyển về hướng Bắc, tức là nếu rô bốt đang ở tọa độ (x,y) thì sau khi thực hiện lệnh N rô bốt sẽ ở tọa độ (x,y+1).

Hãy các định tọa độ của rô bốt sau khi thực hiện lệnh di chuyển nhận được

Hình vẽ bên minh họa việc di chuyển của rô bốt với dòng lệnh ENENWWWS. Sau khi thực hiện, rô bốt sẽ tới tọa độ (-1,1)

Input, Output và Subtasks

Input: (coor.inp)
  • Gồm một dòng chứa xâu S môn tả dòng lệnh. Các ký tự của xâu S là các chữ cái in hoa và thuộc tập ký tự {E,S,W,N}. Độ dài của xâu S thuộc đoạn từ 1 đến 10^5
Output: (coor.out)
  • Hai số nguyên tương ứng là hoành độ và tung độ của rô bốt sau khi thực hiện lệnh di chuyển.
Subtasks
  • Subtask 1 (30\%): Độ dài của xâu S không quá 100
  • Subtask 2 (30\%): Tất cả ký tự của xâu S đều giống nhau, tức là tất cả ký tự của xâu S đều là E, S, W hoặc N
  • Subtask 3 (40\%): Không có giới hạn gì thêm.

Sample

Input (coor.inp)
ENENWWWS
Output (coor.out)
-1 1

Hình chữ nhật (Bình Dương 2024)

Đề bài: Đề thi được đính kèm trong tệp PDF bên dưới.

  • Tệp vào: Bàn phím
  • Tệp ra: Màn hình
  • Thời gian chạy: 1.0s
  • Bộ nhớ: 1024MB

Chuỗi vỏ ốc (Ninh Bình 2024)

Đề bài: Đề thi được đính kèm trong tệp PDF bên dưới.

  • Tệp vào: CHUOI.INP
  • Tệp ra: CHUOI.OUT
  • Thời gian chạy: 1.0s
  • Bộ nhớ: 1024MB