Tổng hợp ôn chuyên ngay 05.03.26
Dãy con liên tiếp các phần tử kề nhau đều khác nhau
Nộp bàiPoint: 1
Cho một dãy số nguyên có n phần tử. Tìm dãy con liên tiếp có các phần tử liền kề khác nhau có độ dài lớn nhất.
Đầu vào:
- Dòng đầu tiên là số lượng phần tử trong mảng n. (1≤n≤10^6).
- Dòng thứ 2 là các phần tử ai trong mảng . (-10^9≤ai≤10^9).
Đầu ra: Kết quả của bài toán.
Input:
10
1 2 3 3 3 4 5 2 1 3
Output:
6
Vận dụng:
- Tìm dãy con liên tiếp có các phần tử giống nhau có độ dài dài nhất.
- Tìm dãy con liên tiếp có 2 phần tử liền kề nhau trái dấu có độ dài dài nhất.
Đếm các phần tử xuất hiện nhiều hơn một lần và liệt kê
Nộp bàiPoint: 1
Viết chương trình cho phép nhập vào mảng A gồm n phần tử số nguyên (n>2). Đếm các phần tử xuất hiện nhiều hơn một lần và liệt kê.
Định dạng đầu vào:
- Dòng đầu tiên là số phần tử của mảng
- Dòng thứ hai là các phần tử của mảng
Định dạng đầu ra:
- Dòng đầu tiên là số các phần tử thỏa mãn
- Dòng thứ hai là các phần tử thõa mãn
INPUT:
7
1 5 10 10 5 2 3
OUTPUT:
2
5 10
Nhỏ nhất và nhỏ nhì
Nộp bàiPoint: 1
Viết chương trình cho phép nhập vào mảng A gồm n phần tử số nguyên (n>2). Tìm giá trị nhỏ nhất và nhỏ thứ hai và in ra.
Định dạng đầu vào:
- Dòng đầu tiên là số phần tử của mảng
- Dòng thứ hai là các phần tử của mảng
Định dạng đầu ra: Giá trị nhỏ nhất và giá trị nhỏ thứ hai
INPUT:
6
80 23 79 58 11 10
OUTPUT:
10 11
Loại bỏ trùng
Nộp bàiPoint: 1
Viết chương trình cho phép nhập vào mảng A gồm n phần tử số nguyên (n>2). Thực hiện loại bỏ các phần tử đã xuất hiện và In ra mảng kết quả.
Định dạng đầu vào:
Dòng đầu tiên là số phần tử của mảng
Dòng thứ hai là các phần tử của mảng
Định dạng đẩu ra: Mảng kết quả
INPUT:
7
1 5 10 10 5 2 3
OUTPUT:
1 5 10 2 3
Dãy tăng dài nhất
Nộp bàiPoint: 1
Một đoạn tăng trong một dãy số nguyên là một đoạn liên tiếp trong dãy sao cho phần từ phía sau lớn hơn phần từ phía trước. Cho dãy số với n phần tử (n không quá 100, các phần tử đều không quá 1000). Viết chương trình tìm các đoạn tăng liên tiếp trong dãy mà số phần tử là nhiều nhất.
Input: Dòng đầu ghi số bộ test. Mỗi test gồm 2 dòng, dòng đầu ghi số N là số phần tử của dãy. Dòng sau ghi N số của dãy. N không quá 100, các số trong dãy đều nguyên dương và không quá 1000.
Output: Với mỗi bộ test, ghi ra thứ tự bộ test. Sau đó là 1 dòng ghi độ dài của đoạn tăng dài nhất. Tiếp theo là một số dòng ghi lần lượt các đoạn tăng dài nhất, từ trái qua phải trong dãy ban đầu.
Ví dụ:
Input:
2
16
2 3 5 7 4 5 8 9 7 11 8 9 6 7 10 12
12
2 3 2 3 2 3 2 2 2 3 4 1
Output:
Test 1:
4
2 3 5 7
4 5 8 9
6 7 10 12
Test 2:
3
2 3 4
Ma trận xoáy ốc
Nộp bàiPoint: 1
Ma trận xoáy ốc cấp N là ma trận vuông có N*N phần tử. Các số được điền vào ma trận trận theo chiều kim đồng hồ theo thứ tự tăng dần bắt đầu từ 1
INPUT:
3
OUTPUT:
1 2 3
8 9 4
7 6 5
Ma trận xoáy ốc nguyên tố
Nộp bàiPoint: 1
Ma trận xoáy ốc nguyên tố cấp N là ma trận vuông có N*N phần tử. Các số được điền vào ma trận theo chiều kim đồng hồ đều là các số nguyên tố từ nhỏ đến lớn
INPUT:
3
OUTPUT:
2 3 5
19 23 7
17 13 11
Độ thích ứng
Nộp bàiPoint: 1
Độ tương thích của hai số nguyên dương x, y được định nghĩa bằng số lượng chữ số tương ứng bằng nhau theo thứ tự hàng đơn vị, hàng chục, hàng trăm,...
Ví dụ:
Hai số x = 1023 và y = 203 có độ tương thích bằng 1 vì có chữ số hàng đơn vị bằng nhau.
Hai số x = 1023 và y = 123 có độ tương thích bằng 2 vì có chữ số hàng đơn vị và hàng chục bằng nhau.
Cho n số nguyên dương a1, a2, ..., an. Hãy tính tổng độ tương thích của mọi cặp số a;, a; (1 ≤ i < j ≤ n)
Dữ liệu nhập vào: Dòng đầu tiên chứa số nguyên dương n (1 ≤ n < 200000); Dòng tiếp theo chứa n số nguyên dương a1, a2,.., an (0 < a; < 10^9,1 ≤ i ≤ n).
Kết quả: Ghi ra file văn bản BAI4.OUT một số nguyên duy nhất là tổng độ tương thích của mọi cặp số ai, a; (1 ≤ i < j ≤ n) trong n số đã cho.
Ví dụ:
Input 01:
4
12 12 13 22
Output 01:
6
Input 02:
7
13 12 13 23 22 211 212
Output 02:
18
Chú ý:
20% số điểm: 𝑛 ≤ 1000
30% số điểm: 1 ≤ ai < 1000
50% số điểm: Không có ràng buộc gì thêm
Sắp xếp lại chuỗi sao cho không có hai ký tự liền kề giống nhau
Nộp bàiPoint: 1
Bạn được cho một chuỗi có độ dài n, gồm các ký tự in hoa từ A đến Z. Hãy sắp xếp lại các ký tự trong chuỗi sao cho không có hai ký tự liền kề nào giống nhau.
Trong số tất cả các cách sắp xếp thỏa mãn điều kiện, hãy in ra xâu có thứ tự từ điển nhỏ nhất. Nếu không thể tạo được một xâu thỏa mãn, hãy in ra -1.
Đầu vào:
Một dòng duy nhất chứa chuỗi đầu vào, gồm n ký tự in hoa từ ~A~ đến ~Z~.
Đầu vào:
In ra chuỗi thỏa mãn điều kiện và nhỏ nhất theo thứ tự từ điển, hoặc -1 nếu không có cách sắp xếp nào hợp lệ.
Ràng buộc:
~1 \le n \le 10^6~
Ví dụ :
Input:
HATTIVATTI
Output:
AHATITITVT
Mã hóa xâu
Nộp bàiPoint: 1
Tuấn có một chuỗi ký tự chỉ gồm các chữ cái thường tiếng Anh và đang cố mã hóa chuỗi này theo một mã hóa nhất định.
Mã hóa này được mô tả bởi hai chuỗi A và B, trong đó mỗi ký tự ở chuỗi A được ánh xạ tới một ký tự tương ứng trong chuỗi B. Ví dụ, nếu
A = abcdefghijklmnopqrstuvwxyz
B = zyxwvutsrqponmlkjihgfedcba
Thì a được ánh xạ thành z và b được ánh xạ thành y, ...
Việc biến đổi chuỗi chỉ một lần thì khá nhàm chán, vì vậy, với một số nguyên dương K, Tuấn muốn lặp lại quá trình mã hóa này K lần. Nhưng giờ đây Tuấn đã mệt và nhờ bạn giúp đỡ. Bạn có thể giúp Tuấn để có được chuỗi cuối cùng không?
Đầu vào:
Dòng đầu tiên chứa xâu S (1 <= |S| <= 10^5) chỉ gồm các kí tự La-tinh in thường.
Dòng tiếp theo chứa một số nguyên dương K (1 <= K <= 10^9).
Hai dòng tiếp theo, mỗi dòng chứa lần lượt hai xâu A và B có đúng 26 kí tự là hoán vị của các kí tự La-tinh in thường từ a đến z.
Đầu ra: In ra một xâu duy nhất là kết quả bài toán.
Input:
hnoi
2
abcdefghijklmnopqrstuvwxyz
pnudzgabijkyehlrqxfmsctovw
Output:
nbyi
Giải thích: Các ký tự hnoi được mã hóa như sau:
h → b → n
n → h → b
o → l → y
i → i → i
Shapur toàn năng (xử lý xâu - hsg)
Nộp bàiPoint: 1
Shapur là một học sinh cực kỳ tài năng. Anh ấy rất giỏi trong mọi thứ, bao gồm cả Tổ hợp, Đại số, Lý thuyết số, Hình học, Giải tích, v.v. Anh ấy không chỉ thông minh mà còn cực kỳ nhanh! Anh ta có thể tính 10^18 số trong một giây. Một ngày nọ vào năm 230 sau Công nguyên, Shapur đang cố gắng tìm hiểu xem có ai có thể thực hiện các phép tính nhanh hơn anh ta không. Kết quả là anh ấy đã làm một cuộc thi rất tuyệt vời và yêu cầu mọi người đến và tham gia. Trong cuộc thi của mình, anh đã cho các thí sinh nhiều cặp số khác nhau. Mỗi số được tạo từ các chữ số 0 hoặc 1. Các thí sinh nên viết một số mới tương ứng với cặp số đã cho. Quy tắc rất đơn giản: Chữ số thứ i của câu trả lời là 1 khi và chỉ khi chữ số thứ i của hai số đã cho khác nhau. Trong trường hợp khác, chữ số thứ i của câu trả lời là 0.
Đầu vào: Có hai dòng trong mỗi đầu vào. Mỗi người trong số họ chứa một số duy nhất. Đảm bảo rằng các số được tạo từ 0 và 1 và độ dài của chúng là như nhau. Các số có thể bắt đầu bằng 0. Độ dài của mỗi số không vượt quá 100.
Đầu ra: Viết một dòng - câu trả lời tương ứng. Đừng bỏ qua các số 0 ở hàng đầu.
Input:
1100
0011
Output:
1111
Chuẩn hóa tên 5
Nộp bàiPoint: 1
Tên người dùng sẽ được chuẩn hóa theo nguyên tắc tên được viết đầu tiên, phân tách với phần họ và tên đệm dấu phẩy. Các chữ cái nằm trong tên đều được viết hoa; chữ cái đầu tiên của tên đệm và họđược viết hoa, các chữ cái còn lại viết thường.
INPUT:
ngUYEN van binh
OUTPUT:
BINH, Nguyen Van
Email và Mật khẩu (xâu ký tự - chuỗi ký tự)
Nộp bàiPoint: 1
Hiện tại trường đại học NONAME tổ chức cấp email cho sinh viên mới nhập học. Email và mật khẩu sẽ được cấp dựa trên tên của sinh viên và ngày sinh của sinh viên đó. Bạn hãy viết chương trình để cấp tài khoản theo yêu cầu như sau, tên email được tạo bằng cách lấy tên của sinh viên và ghép với các chữ cái đầu tiên của họ và tên đệm, tất các ký tự trong email đều ở dạng in thường, ví dụ sinh viên có tên "Nguyen Van Long" sẽ được cấp email "longnv@xyz.edu.vn". Mật khẩu sẽ dựa trên ngày sinh của sinh viên đó, bằng cách ghép ngày tháng năm lại với nhau, ví dụ sinh viên sinh ngày 27/04/2002 sẽ có mật khẩu là 2742002.
Input 01:
1
le van TEO 11/05/2004
Output 01:
teolv@xyz.edu.vn
1152004
Input 02:
2
le van TEO 11/05/2004
tran thi TY 23/2/2006
Output 02:
teolv@xyz.edu.vn
1152004
tytt@xyz.edu.vn
2322006
Ký tự xuất hiện ở cả 2 xâu 1 (xâu ký tự - chuỗi ký tự)
Nộp bàiPoint: 1
Cho 2 xâu kí tự S1 và S2, hãy in ra các kí tự xuất hiện ở cả 2 xâu theo thứ tự từ điển, chú ý mỗi kí tự chỉ liệt kê một lần. Sau đó tiếp tục liệt kê các kí tự xuất hiện ở S1 mà không xuất hiện trong S2 và ngược lại theo thứ tự từ điển.
Ràng buộc: ~1 \leq len(S1) ≤ 100000; 1 \leq len(S2) ≤ 100000~
Dòng 1 in ra các ký tự xuất hiện ở cả 2 xâu theo thứ tự từ điển tăng dẫn. Dòng 2 in ra các ký tự xuất hiện ở 1 trong 2 xâu theo thứ tự từ điển tăng dần.
Input:
hoccongnghe
laptrinh
Output:
hn
acegiloprt
Sắp xếp các từ trong xâu 1 (xâu ký tự - chuỗi ký tự)
Nộp bàiPoint: 1
Cho một xâu kí tự S bao gồm các chữ cái và dấu cách, một từ được định nghĩa là các kí tự liên tiếp không chứa dầu cách, đầu tiên hãy sắp xếp các từ trong xâu theo thứ tự từ điển tăng dần, sau đó sắp xếp các từ trong xâu theo thứ tự chiều dài tăng dần, trong trường hợp có nhiều từ có cùng chiều dài thì từ nào có thứ tự từ điển nhỏ hơn sẽ in ra trước.
Ràng buộc: ~1 \leq len(s) \leq 100000~
Dòng đầu tiên in ra các từ trong xâu theo thứ tự từ điển tăng dần. Dòng thứ 2 in ra các từ trong xâu theo thứ tự chiều dài tăng dần, trong trường hợp có nhiều từ có cùng chiều dài thì từ nào có thứ tự từ điển nhỏ hơn sẽ in ra trước. Các từ được in cách nhau một dấu cách.
Input:
hoc cong nghe day lap trinh
Output:
cong day hoc lap nghe trinh
day hoc lap cong nghe trinh
Cửa sổ trượt trùng nhau (kỹ thuật cửa sổ trượt)
Nộp bàiPoint: 1
Cho một mảng A có N phần tử và một số nguyên K. Hãy xác định xem trong mảng có tồn tại 2 phần tử A[i] và A[j] với i khác j mà A[i] = A[j] và abs(i - j) ~\leq~ K. Nếu có in ra YES, ngược lại in ra NO.
Ràng buộc: ~1 \leq K, N \leq 10^6~; ~1 \leq A[i] \leq 10^6~
Input 01:
13 7
2 8 6 8 1 3 7 8 5 6 3 9 4
Output 01:
YES
Input 02:
5 5
9 10 7 8 4
Output 02:
NO
Số lớn nhất và nhỏ nhất của mọi dãy con liên tiếp cỡ K (kỹ thuật cửa sổ trượt)
Nộp bàiPoint: 1
Cho mảng A có n phần tử nguyên dương, hãy in ra số lớn nhất và nhỏ nhất của mọi dãy con liên tiếp có K phần tử của mảng A
Ràng buộc: ~1 \leq N, K \leq 10^6~; ~1 \leq A[i] \leq 10^9~
In ra số lớn nhất và nhỏ nhất của mọi dãy con trên từng dòng
Input:
8 3
8 5 8 6 7 6 5 8
Output:
5 8
5 8
6 8
6 7
5 7
5 8
Giải thích: Tổng bằng 13 và dãy con đó là 6, -5, 12
Chuyển cây bạch đàn (kỹ thuật cửa sổ trượt)
Nộp bàiPoint: 1
Nhà Tít ở gần sông, trên bờ sông có trồng N cây bạch đàn, tuy nhiên nhiều cây bạch đàn không thể sống được do ngập lụt gió bão gần bờ sông. Một ngày nọ Tít tha thẩn bên bờ sông và tự hỏi liệu có thể tìm thấy K cây bạch đàn còn sống liên tiếp hay không? Nếu không tìm được Tít có thể chuyển các cây bạch đàn ở những chỗ khác để tạo thành K cây bạch đàn còn sống liên tiếp. Bạn hãy giúp Tít di chuyển ít nhất số cây bạch đàn để tạo thành K cây bạch đàn còn sống liên tiếp, hoặc có thể đưa ra kết luận rằng không thể di chuyển cây bạch đàn để tạo thành K cây bạch đàn còn sống liên tiếp.
Ràng buộc: ~1 \leq K \leq N \leq 10^6~
Output: In ra số cây bạch đàn ít nhất cần chuyển hoặc in ra NO nếu không thể chuyển được để tạo thành K cây còn sống liên tiếp
Input 01:
11 3
0 0 0 0 1 0 1 0 0 0 1
Giải thích: 0 là cây bạch đàn bị chết, 1 là cây còn sống
Output 01:
1
Giải thích: Cần chuyển ít nhất 1 cây
Input 02:
11 4
0 0 0 0 1 0 1 0 0 0 1
Output 02:
NO