1000 subs
đã đăng vào 31, Tháng 3, 2026, 14:072000 next
VNOJ - VNOI Online Judge là hệ thống online judge open source chính thức của VNOI, dựa trên nền tảng của hệ thống DMOJ.
VNOJ được tạo ra với mục đích xây dựng một môi trường luyện tập và cạnh tranh dành cho cộng đồng Tin Học Việt Nam. VNOJ là một hệ thống chấm bài tự động hoàn toàn độc lập của VNOI và là bước tiến tiếp theo trong quá trình di dời và nâng cấp VOJ.
Hiện nay, hệ thống VNOJ đã đưa trở lại kho bài tập rộng lớn từ hệ thống cũ VOJ (bao gồm các đề thi Học Sinh Giỏi Quốc Gia, ACM-ICPC, ... qua các năm). Kho bài tập này sẽ được cập nhật thường xuyên với những bài tập mới từ các kì thi, trong đó có những kì thi luyện tập trên VNOJ và những đề thi chính thức của VNOI.
Nếu đây là lần đầu tiên tham gia VNOJ, hãy đăng ký tài khoản. Sau đó, thử bài tập A cộng B.
2000 next
Hi
tui can upvote de ko bi dong gop so am cuu tui vs
112
(em xin phep de tieng anh vi em ko bat telex duoc) many month ago, i have making a huge mess by making a war and disrespect everyone in the discord server today, i am very regret of my behaviour and want to sorry everyone:
Nếu bạn là một người đam mê thuật toán, chắc hẳn cái tên e-maxx hay CP-Algorithms đã quá quen thuộc. Đây là kho tàng kiến thức đồ sộ, nơi chứa đựng mọi thứ từ những thuật toán cơ bản đến những cấu trúc dữ liệu nâng cao nhất.
Tuy nhiên, việc tiếp cận bằng tiếng Anh đôi khi là một trở ngại lớn khiến nhiều bạn trẻ Việt Nam khó tiếp thu trọn vẹn tinh túy của bài viết. Đó chính là lý do dự án CP-Algorithms Tiếng Việt ra đời!
Dự án không chỉ đơn thuần là dịch thuật, mà còn là nỗ lực mang lại trải nghiệm học tập gần gũi nhất cho cộng đồng Coder Việt:
Từ những bước chân đầu tiên cho đến khi chinh phục các kỳ thi Olympic (VOI) hay kỳ thi quốc tế (ICPC), trang web bao hàm tất cả:
| Chủ đề | Nội dung nổi bật |
|---|---|
| Số học | GCD/LCM, Số nguyên tố, Nghịch đảo modulo... |
| Quy hoạch động | Các kỹ thuật tối ưu hóa QHĐ kinh điển. |
| Đồ thị | DFS/BFS, Dijkstra, Luồng cực đại (Flow)... |
| Cấu trúc dữ liệu | Segment Tree, Fenwick Tree, Treap... |
| Xử lý chuỗi | KMP, Z-algorithm, Suffix Array... |
Đây là một dự án mở. Nếu bạn yêu thích thuật toán và muốn đóng góp cho cộng đồng, bạn hoàn toàn có thể tham gia hiệu đính hoặc dịch các bài viết mới. Mỗi đóng góp của bạn đều giúp lộ trình học tập của các thế hệ Coder Việt sau này trở nên bằng phẳng hơn.
Ghé thăm ngay tại: https://deanqkhanhcoder.github.io/cp-algorithms-vi/
Hãy chia sẻ bài viết này đến bạn bè và cùng nhau nâng tầm tư duy thuật toán của người Việt nhé! 🔥
🖐️ Xin chào các bạn, trong số lần này, VNOI Wiki xin giới thiệu đến các bạn bài viết về Thuật toán tham lam (Greedy Algorithm) - một trong những tư duy thuật toán quan trọng và là một chủ đề cực kỳ phổ biến trong giải thuật và lập trình.
🔗 Link bài viết: VNOI Wiki | Tham lam
✍️ Biên soạn: Nguyễn Hoàng Dương - Trường Đại học Công nghệ, ĐHQGHN
✅ Reviewers:
Nguyễn Tấn Minh - Trường Đại học Khoa học Tự nhiên, ĐHQG-HCM
Võ Đức Đoàn - THPT Chuyên Nguyễn Tất Thành, Quãng Ngãi
💖 VNOI chân thành cảm ơn đội ngũ Admin và TNV đã không ngừng đóng góp, biên soạn và hoàn thiện kho tri thức thuật toán chất lượng cao cho cộng đồng.

using namespace std;
int main(){ ios::syncwithstdio(false); cin.tie(nullptr);
int N, K;
cin >> N >> K;
vector<long long> a(N);
for(int i = 0; i < N; i++) cin >> a[i];
unordered_map<long long, vector<int>> pos;
pos.reserve(N * 2);
for(int i = 0; i < N; i++)
pos[a[i]].push_back(i + 1);
long long ans = 0;
for(auto &p : pos){
auto &v = p.second;
int t = v.size();
if(t < K) continue;
for(int i = 0; i + K - 1 < t; i++){
for(int j = i + K - 1; j < t; j++){
int c = j - i + 1;
int maxLen = 2 * c - 1;
int Lmin = v[j] - maxLen + 1;
int Lmax = v[i];
int Rmin = v[j];
int Rmax = v[i] + maxLen - 1;
Lmin = max(Lmin, 1);
Lmax = min(Lmax, v[i]);
Rmin = max(Rmin, v[j]);
Rmax = min(Rmax, N);
if(Lmin > Lmax || Rmin > Rmax) continue;
long long total = 1LL * (Lmax - Lmin + 1) * (Rmax - Rmin + 1);
ans += total;
}
}
}
cout << ans;
}
Cho mảng gồm 𝑁 N số nguyên dương 𝐴 1 , 𝐴 2 , … , 𝐴 𝑁 A 1
,A 2
,…,A N
và một số nguyên 𝐾 K.
Một đoạn con liên tiếp [ 𝐿 , 𝑅 ] [L,R] được gọi là K-dominant nếu tồn tại một giá trị 𝑋 X sao cho:
số lần xuất hiện của 𝑋 X trong đoạn lớn hơn tổng số lần xuất hiện của tất cả các giá trị khác trong đoạn (tức là 𝑓 𝑟 𝑒 𝑞 ( 𝑋 ) > ( 𝑅 − 𝐿 + 1 ) − 𝑓 𝑟 𝑒 𝑞 ( 𝑋 ) freq(X)>(R−L+1)−freq(X))
và đồng thời 𝑓 𝑟 𝑒 𝑞 ( 𝑋 ) ≥ 𝐾 freq(X)≥K.
Hãy đếm số lượng đoạn con K-dominant.
Ràng buộc:
1 ≤ 𝑁 ≤ 2 × 10 5 1≤N≤2×10 5
1 ≤ 𝐴 𝑖 ≤ 10 9 1≤A i
≤10 9
1 ≤ 𝐾 ≤ 𝑁 1≤K≤N
Input:
N K A1 A2 ... AN
Output: In ra một số nguyên là số đoạn con K-dominant.
Ví dụ:
Input 6 2 1 2 2 2 3 2
Output 7
downvote toi di