Organization Image

ÔN TẬP CÙNG LQDOJ !!!

Công khai 3 thành viên
• 9:13 a.m. 10 Tháng 7, 2025

BÀI TẬP : TÔ MÀU

Cho một lưới n × m gồm các ô đen và trắng.

Trong một thao tác, bạn có thể chọn hai ô có cùng màu và tô lại toàn bộ hình chữ nhật tạo bởi hai ô đó bằng màu đó. Cụ thể, nếu chọn hai ô (x₁, y₁) và (x₂, y₂) có cùng màu c, thì tất cả các ô trong hình chữ nhật có đỉnh đối là hai ô đó sẽ được tô lại màu c.

Bạn có thể thực hiện bất kỳ số thao tác nào (kể cả không thực hiện). Hỏi liệu có thể biến toàn bộ các ô trong lưới về cùng một màu hay không?

Ví dụ một phép biến đổi

Input
Dòng đầu tiên chứa một số nguyên t — số lượng test.
Mỗi test gồm:
Một dòng chứa hai số nguyên n và m — số hàng và số cột của lưới.
n dòng tiếp theo, mỗi dòng gồm m ký tự là 'w' hoặc 'B', biểu diễn màu của từng ô trong lưới ban đầu (w là trắng, B là đen).
Output
Với mỗi test, in ra "YES" nếu có thể biến toàn bộ các ô trong lưới về cùng một màu, "NO" nếu không thể.

Giới hạn
1 ≤ t ≤ 10⁴
1 ≤ n, m ≤ 500
Tổng số ô n ⋅ m của tất cả test không vượt quá 3⋅10⁵.

Ví dụ
Input:
2
2 13
WBWWWBWWWBWBB
WBBBBWBBBWWWW
7 8
WBWWWBWB
WBBWBBBB
WBWWWBBB
WWWWBWBB
WBWBBWWB
WBBWBBBB
WBWBBBWB
Output:
YES
NO

...Xem thêm
• 3:17 p.m. 1 Tháng 7, 2025

Nhầm

https://lqdoj.edu.vn/post/3680-50-ham-co-ban-trong-ngon-nguu-lap-trinh-lua

Mình xin đính chính nhẹ tiêu đề bài viết ở link trên nha 
Đáng lẽ phải là "50 hàm cơ bản trong ngôn ngữ lập trình Lua" chứ không phải ngữu như mình đã gõ nhầm 
Mong các bạn thông cảm vì lỗi chính tả nhỏ xíu này nhen 
Cảm ơn mọi người đã ghé xem bài viết! 

...Xem thêm
• 3:13 p.m. 1 Tháng 7, 2025

50 hàm cơ bạn trong ngôn ngữu lập trình Lua

print - in ra màn hình

input - nhập từ người dùng

if - rẽ nhánh điều kiện

elseif - điều kiện phụ

else - mặc định nếu không thoả

for - vòng lặp cố định

while - vòng lặp điều kiện

repeat - vòng lặp lặp ít nhất một lần

function - định nghĩa hàm

return - trả kết quả về hàm

table - tạo bảng (kiểu dữ liệu mạnh nhất Lua)

ipairs - lặp qua mảng tuần tự

pairs - lặp qua tất cả key trong bảng

tonumber - chuyển chuỗi thành số

tostring - chuyển số thành chuỗi

type - kiểm tra kiểu dữ liệu

math.random - sinh số ngẫu nhiên

math.abs - giá trị tuyệt đối

math.max - tìm số lớn nhất

math.min - tìm số nhỏ nhất

math.sqrt - căn bậc hai

string.sub - cắt chuỗi

string.upper - viết hoa

string.lower - viết thường

string.len - độ dài chuỗi

string.match - khớp mẫu chuỗi

string.gsub - thay thế chuỗi

string.find - tìm vị trí chuỗi con

string.rep - lặp chuỗi nhiều lần

string.byte - lấy mã ascii ký tự

string.char - tạo ký tự từ ascii

table.insert - thêm phần tử vào bảng

table.remove - xoá phần tử khỏi bảng

table.sort - sắp xếp bảng

dofile - chạy file Lua khác

load - chạy code từ chuỗi

require - nạp module

os.time - lấy thời gian hiện tại

os.date - lấy ngày giờ định dạng

os.execute - gọi lệnh hệ thống

io.open - mở file

io.read - đọc file

io.write - ghi file

coroutine.create - tạo luồng

coroutine.resume - chạy luồng

coroutine.yield - tạm dừng luồng

setmetatable - gán metatable cho bảng

getmetatable - lấy metatable ra

pcall - gọi hàm an toàn tránh lỗi

error - tạo lỗi thủ công
...Xem thêm
• 1:57 p.m. 22 Tháng 6, 2025

50 hàm cơ bản trong c++ ( phần đầu )

1. Nhập / Xuất dữ liệu
Hàm: cin , Cú pháp: cin >> x; , Ý nghĩa: Nhập dữ liệu từ bàn phím

Hàm: cout , Cú pháp: cout << x; , Ý nghĩa: Xuất dữ liệu ra màn hình

Hàm: getline() , Cú pháp: getline(cin, s); , Ý nghĩa: Nhập nguyên dòng có khoảng trắng


2. Toán học (#include <cmath>)
Hàm: abs() , Cú pháp: abs(x) , Ý nghĩa: Trị tuyệt đối (số nguyên)

Hàm: fabs() , Cú pháp: fabs(x) , Ý nghĩa: Trị tuyệt đối (số thực)

Hàm: sqrt() , Cú pháp: sqrt(x) , Ý nghĩa: Căn bậc hai

Hàm: pow() , Cú pháp: pow(x, y) , Ý nghĩa: Lũy thừa x^y

Hàm: ceil() , Cú pháp: ceil(x) , Ý nghĩa: Làm tròn lên

Hàm: floor() , Cú pháp: floor(x) , Ý nghĩa: Làm tròn xuống

Hàm: round() , Cú pháp: round(x) , Ý nghĩa: Làm tròn gần nhất

Hàm: fmod() , Cú pháp: fmod(x, y) , Ý nghĩa: Lấy dư số thực

Hàm: log() , Cú pháp: log(x) , Ý nghĩa: Logarit cơ số e

Hàm: log10() , Cú pháp: log10(x) , Ý nghĩa: Logarit cơ số 10

Hàm: sin() , Cú pháp: sin(x) , Ý nghĩa: Tính sin (đơn vị radian)

Hàm: cos() , Cú pháp: cos(x) , Ý nghĩa: Tính cos (radian)

Hàm: tan() , Cú pháp: tan(x) , Ý nghĩa: Tính tan (radian)


3. Chuỗi (#include <string>)
Hàm: length() , Cú pháp: s.length() , Ý nghĩa: Độ dài chuỗi

Hàm: size() , Cú pháp: s.size() , Ý nghĩa: Tương tự length()

Hàm: substr() , Cú pháp: s.substr(pos, len) , Ý nghĩa: Lấy chuỗi con

Hàm: find() , Cú pháp: s.find("abc") , Ý nghĩa: Tìm vị trí chuỗi con

Hàm: erase() , Cú pháp: s.erase(pos, len) , Ý nghĩa: Xóa chuỗi con

Hàm: insert() , Cú pháp: s.insert(pos, "abc") , Ý nghĩa: Chèn chuỗi tại vị trí

Hàm: replace() , Cú pháp: s.replace(pos, len, "xyz") , Ý nghĩa: Thay thế chuỗi

Hàm: push_back() , Cú pháp: s.push_back('a') , Ý nghĩa: Thêm ký tự vào cuối chuỗi

Hàm: pop_back() , Cú pháp: s.pop_back() , Ý nghĩa: Xóa ký tự cuối

Hàm: clear() , Cú pháp: s.clear() , Ý nghĩa: Xóa toàn bộ chuỗi

Hàm: compare() , Cú pháp: s1.compare(s2) , Ý nghĩa: So sánh hai chuỗi


4. Vector (#include <vector>)
Hàm: push_back() , Cú pháp: v.push_back(x) , Ý nghĩa: Thêm phần tử vào cuối vector

Hàm: pop_back() , Cú pháp: v.pop_back() , Ý nghĩa: Xóa phần tử cuối

Hàm: size() , Cú pháp: v.size() , Ý nghĩa: Trả về số phần tử trong vector

Hàm: clear() , Cú pháp: v.clear() , Ý nghĩa: Xóa tất cả phần tử

Hàm: insert() , Cú pháp: v.insert(v.begin()+i, x) , Ý nghĩa: Chèn phần tử tại vị trí i

Hàm: erase() , Cú pháp: v.erase(v.begin()+i) , Ý nghĩa: Xóa phần tử tại vị trí i


5. Thuật toán mảng (#include <algorithm>)
Hàm: sort() , Cú pháp: sort(a, a+n) , Ý nghĩa: Sắp xếp tăng dần

Hàm: reverse() , Cú pháp: reverse(a, a+n) , Ý nghĩa: Đảo ngược dãy

Hàm: max_element() , Cú pháp: *max_element(a, a+n) , Ý nghĩa: Tìm phần tử lớn nhất

Hàm: min_element() , Cú pháp: *min_element(a, a+n) , Ý nghĩa: Tìm phần tử nhỏ nhất

Hàm: count() , Cú pháp: count(a, a+n, x) , Ý nghĩa: Đếm số lần x xuất hiện

Hàm: find() , Cú pháp: find(a, a+n, x) , Ý nghĩa: Tìm phần tử x trong mảng

Hàm: accumulate() , Cú pháp: accumulate(a, a+n, 0) , Ý nghĩa: Tính tổng các phần tử


6. Kiểm tra ký tự (#include <cctype>)
Hàm: isalnum() , Cú pháp: isalnum(c) , Ý nghĩa: Kiểm tra ký tự là chữ hoặc số

Hàm: isalpha() , Cú pháp: isalpha(c) , Ý nghĩa: Kiểm tra ký tự là chữ

Hàm: isdigit() , Cú pháp: isdigit(c) , Ý nghĩa: Kiểm tra ký tự là số

Hàm: islower() , Cú pháp: islower(c) , Ý nghĩa: Kiểm tra chữ thường

Hàm: isupper() , Cú pháp: isupper(c) , Ý nghĩa: Kiểm tra chữ hoa

Hàm: tolower() , Cú pháp: tolower(c) , Ý nghĩa: Chuyển sang chữ thường

Hàm: toupper() , Cú pháp: toupper(c) , Ý nghĩa: Chuyển sang chữ hoa


7. Làm việc với file (#include <fstream>)
Hàm: ifstream , Cú pháp: ifstream in("file.txt"); , Ý nghĩa: Mở file để đọc

Hàm: ofstream , Cú pháp: ofstream out("file.txt"); , Ý nghĩa: Mở file để ghi

Hàm: getline() , Cú pháp: getline(in, s); , Ý nghĩa: Đọc dòng từ file văn bản

Hàm : freopen() , Cú pháp: freopen(tên file, r/ w, stdin/ stdout), Ý nghĩa : Mở file để đọc / ghi
...Xem thêm