•
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
