Xin chào, bạn được Loo Loo mời tham gia diễn đàn viết bài kiếm tiền VNO, bấm vào đây để đăng ký.
  1. nguyen minh duc

    Giải bài ntucoder BACO - Bàn cờ

    Link bài: Thuật toán: Ta duyệt các ô trống, nếu ô đó chưa kiểm soát thì ta đánh dấu lại. Quân xe sẽ kiểm soát các ô từ dòng 1-8 của cột xc và các ô từ cột 1-8 của dòng xd. Quân tượng sẽ kiểm soát các đường chéo tỏa ra 4 hướng. Code: #include <bits/stdc++.h> using namespace std; int...
  2. nguyen minh duc

    Giải bài ntucoder CLOA - Thành Cổ Loa

    Link bài: Thuật toán: Ta bao các cạnh bên ngoài của thành bằng các phần tử mang giá trị 1. Tường thành là một mảng 2 chiều. Tạo một chương trình con để di chuyển, khi đụng trúng bờ bao 1 hoặc đụng trúng lớp tường bên ngoài, sẽ lập tức rẽ phải. Bài này gần tương tự bài VOXO, chỉ khác...
  3. nguyen minh duc

    Giải bài ntucoder VOXO - Vòng xoắn

    Link bài: Thuật toán: Khởi chạy mảng 2 chiều chứa hình xoắn ốc của bài, lấy tọa độ a (i) (j) với i = 101 và j = 101 làm gốc tọa độ. Dùng chương trình con để chạy từng cạnh một của hình xoắn ốc, ta sẽ khởi tạo từ trong ra ngoài. Đối với 1 cạnh, hướng đi của ta sẽ thẳng tiến với 1 trục giữ...
  4. nguyen minh duc

    Giải bài ntucoder BACO2 - Bàn cờ 2

    Link bài: Thuật toán: Dùng một mảng 2 chiều để đánh dấu các ô trên bàn cờ. Với mỗi quân cờ, ta bắt đầu lan ra theo các hướng đi hợp lệ của nó. Code: #include<bits/stdc++.h> #define fi first #define se second #define ii pair <int, int> #define rep(k, n) for (int i = k; i <= n; i++) using...
  5. nguyen minh duc

    Giải bài ntucoder ALBO - Alice và Bob

    Link bài: Thuật toán: Trường hợp k = 1, người chiến thắng sẽ được xác định đơn giản: Nếu n lẻ, Alice sẽ là người thắng. Bằng không, Bob sẽ thắng. Trường hợp k > n, Alice sẽ thắng sau một lượt chơi. Trường hợp n = k, Alice sẽ thắng sau một lượt chơi. Tổng quát với trường hợp (2x+1) *k...
  6. nguyen minh duc

    Giải bài ntucoder DATA - Dãy tăng

    Link bài: Thuật toán: Với bài này ta chỉ cần duyệt O (n). Xét từng phần tử thỏa mãn dãy tăng dần. Nếu gặp phần tử i ≤ phần tử i-1, ta sẽ xét dãy i→n xem liệu đây có là dãy tăng hay không. Điều kiện ràng buộc rằng phần tử thứ n phải nhỏ hơn phần tử thứ nhất, nếu không thì trong bất cứ...
  7. nguyen minh duc

    Giải bài ntucoder TIVI - Truyền hình

    Link bài: Thuật toán: Với bài này, ta sắp xếp các chương trình theo thứ tự lớn dần về thời gian bắt đầu phát sóng. Dùng 2 vòng for để đếm thủ công. Code: #include <bits/stdc++.h> #define ii pair<int, int> #define fi first #define se second #define rep(k, n) for (int i = k; i <= n; i++)...
  8. nguyen minh duc

    Giải bài ntucoder XOSO - Xóa số (OLPCĐ 2012)

    Cho dãy n số nguyên không âm a1, a2, an. Người ta tiến hành chọn ra 2 chỉ số i, j sao cho i < j Và xóa khỏi dãy 2 số ai, aj để tổng giá trị các số còn lại trong dãy là số chẵn. Yêu cầu: Cho dãy số a1, a2, an. Hãy đếm số lượng cách chọn 2 chỉ số i, j thỏa mãn. Hai cách chọn khác nhau nếu tồn...
  9. nguyen minh duc

    Giải bài ntucoder SABO - Sắp bò

    Link bài: Thuật toán: Đầu tiên, khi trong hàng có 0 con bò (n = 0), ta có 1 cách xếp. Thống kê số cách xếp i con bò thành hàng (i < n), với trường hợp i ≤ k tức trong hàng chỉ có thể có nhiều nhất 1 con bò đực, số cách sắp chỉ có thể có i con bò trắng và i trường hợp trong đó có 1 con bò...
  10. nguyen minh duc

    Giải bài ntucoder DASO - Dãy số Fibonanci (OLPCĐ 2013)

    Link bài: Thuật toán: Ta duyệt mảng từ 3 tới n (Vì dãy có tính chất Fibonanci chỉ được xác định với 3 phần tử trở lên và tính chất chỉ có thể xác định khi có ít nhất 3 phần tử). So sánh và chọn ra độ dài lớn nhất ta tìm được. Code: #include <bits/stdc++.h> using namespace std; int ans...
  11. nguyen minh duc

    Giải bài ntucoder LAGA - Lát gạch

    Link bài: Thuật toán: Nhận xét: Ở trường hợp n = 0, ta chỉ có 1 cách xếp các ô gạch. Trường hợp n = 1, ta có 3 cách xếp các ô gạch trên. Gọi số cách điểm xuyết của i ô gạch là ai: Với tường hợp thứ i (i > 1) ta có nhận xét sau: Nếu ô gạch thứ i-1 có điểm xuyết là 1 0 thì ở ô thứ i, điểm...
  12. nguyen minh duc

    Giải bài ntucoder GIDA - Giao đấu (OLP 2014)

    Link bài: Thuật toán: Mục đích ở đây là sắp xếp các cặp đấu sao cho trường sở tại đạt được số điểm lớn nhất. Sắp xếp lần lượt số điểm năng lực của 2 đội từ thấp đến cao. Dùng 2 con trỏ, con trỏ i cho trường đề xuất, con trỏ j cho trường sở tại. Ta sẽ tìm các cặp đấu Ai và Bj sao cho Ai <...
  13. nguyen minh duc

    Giải bài ntucoder Khieuvu3 - Khiêu vũ 3

    Link bài: Thuật toán: Ta sắp xếp dãy người theo thứ tự tăng dần của chiều cao. Do không có 2 người nào có chiều cao giống nhau, nên ta sẽ dùng chặt nhị phân để giải quyết bài toán (Giảm thời gian tìm kiếm khi chặt nhị phân chỉ cần O (logn) thay vì duyệt hết dãy với O (n). Duyệt dãy từ 1...
  14. nguyen minh duc

    Giải bài ntucoder OCSE - Ốc sên ăn rau

    Link bài: Thuật toán: Ta dùng thuật toán quay lui để đánh dấu tất lan dần cả các ô mà ốc sên có thể đi đến. Nếu các ô đó có rau thì ốc sên măm măm rồi đi tiếp. Code: #include <bits/stdc++.h> using namespace std; int n, m, y, x, ans, a[107][107]; void doit(int i, int j){ if (a[i][j]...
  15. nguyen minh duc

    Giải bài ntucoder - BINAS

    Link bài: Thuật toán: Ta dùng quay lui để gọi ra hết các trường hợp có thể xảy ra của chuỗi nhị phân rồi in ra. Code: #include<bits/stdc++.h> using namespace std; int i, n; int a[1000]; void viet(){ for (int i = 1; i <= n; i++){ cout << a[i]; } cout << endl; } void...
  16. nguyen minh duc

    Giải bài ntucoder DIKI - Sân điền kinh

    Link bài: Thuật toán: Ta sắp xếp các vạch sơn theo thứ tự tăng dần của khoảng các tới đầu sân. Dùng chặt nhị phân để giảm độ phức tạp khi tìm kiếm vạch chạy xuống O (logn). Với vạch sân thứ i, ta sẽ tìm kiếm trên đoạn i+1 → n. Do đoạn 1→ i-1 đã được tìm kiếm trước đó. Code: #include...
  17. nguyen minh duc

    Giải bài ntucoder TILE - Chồng gạch

    Link bài: Thuật toán: Những viên gạch to hơn chắc chắn sẽ đặt được nhiều viên gạch hơn lên trên nó. Ta sắp xếp các viên gạch theo thứ tự tăng dần về độ cứng. Chọn lần lượt từng viên gạch kèm theo ràng buộc về độ cứng nhỏ nhất trong chồng gạch được chọn, tránh tình trạng quá tải. VD...
  18. nguyen minh duc

    Giải bài ntucoder BNHAN - Bảng nhân

    Link bài: Thuật toán: Chạy 2 vòng for, lần lượt dùng một biến "dem" để liệt kê các giá trị của bẳng vào một mảng a. Sắp xếp mảng a và in ra giá trị thứ k của mảng. Code: #include <bits/stdc++.h> using namespace std; int dem, a[250007], n, m, k; int main(){...
  19. nguyen minh duc

    Giải bài ntucoder VASU - Vắt sữa bò

    Link bài: Thuật toán: Ta sẽ vắt các con bò theo thứ tự từ nhiều sữa nhất đến ít sữa nhất. Nếu vắt những con bò ít sữa hơn thì những con bò nhiều sữa hơn sẽ bị giảm lượng sữa rất nhiều (Tối đa n-1 lít) trong khi nếu để những con bò ít sữa vắt cuối cùng, chúng có hết sữa giữa chừng cũng không...
  20. nguyen minh duc

    Giải bài ntucoder SXTRON - Sắp xếp trộn

    Link bài: Thuật toán: Ta sẽ dùng đệ quy và 2 con trỏ để giải quyết bài này. Với con trỏ i, j trên 2 mảng a, b nếu a< b[j] ta sẽ in ra "ai" và tiếp tục với i+1, j. Code: #include <bits/stdc++.h> using namespace std; int c[107], b[107], n, m; void doit(int i, int j){ if (b[i] <= c[j]...
  21. nguyen minh duc

    Giải bài ntucoder LINE - Trò chơi line

    Link bài: Thuật toán: Ta dùng thuật toán quay lui để lan đường đi từ viên bi cần di chuyển ra khắp bản đồ. Nếu thuật toán lan được đến viên bi cần tìm, ta sẽ in "YES", không thì in "NO". Code: #include <bits/stdc++.h> using namespace std; int a[11][11], n, sy, dy, sx, dx; void doit(int i...
  22. nguyen minh duc

    Giải bài ntucoder KIVU - Khiêu vũ

    Link bài: Thuật toán: Gọi dãy các bạn trai là A và các bạn nữ là B. Ta sắp xếp các bạn nam và nữ theo thứ tự tăng dần về chiều cao. Bài này ta sẽ dùng 2 con trỏ. Với cặp A (i) và B (j) thỏa mãn ta sẽ ưu tiên dịch chuyển con trỏ trên dãy A một lượng x đơn vị đến khi gặp A (i+x) > B (j+1)...
  23. nguyen minh duc

    Giải bài ntucoder LUTA - Luyện tập (OLPCĐ 2011)

    Link bài: Thuật toán: Để giải một bài có độ khó cao hơn trình độ hiện tại, ta cần hoàn thành các bài có độ khó trong tầm với để tích lũy kinh nghiệm. Con đường trên là duy nhất, điểm kinh nghiệm là vô nghĩa nếu độ khó của bài là quá cao. Bằng tư duy đó, ta sẽ sắp xếp các bài với độ khó tăng...
  24. nguyen minh duc

    Giải bài ntucoder LUDI - Lưu diễn

    Link bài: Cách 1: Thuật toán: Sắp xếp các buổi diễn theo thứ tự tăng dần của giờ bắt đầu. Ta dùng đệ quy để giải quyết vấn đề. Với buổi diễn thứ i, ta sẽ tìm buổi diễn thứ j (j < i) thỏa giờ bắt đầu buổi diễn thứ j không được sớm hơn giờ kết thúc buổi diễn thứ i. Lặp lại với buổi diễn...
  25. nguyen minh duc

    Giải bài ntucoder BUBE - Búp bê gỗ

    Link bài: Cách 1: Thuật toán: Sắp xếp các con búp bê lớn dần theo thứ tự kích thước. Ta dùng các con búp bê lớn nhất để chứa nhiều nhất các con búp bê nhỏ hơn. Ta có thể dùng thuật toán đệ quy để tính toán (Vì test bài này không quá lớn, nhưng sẽ không phải là cách tối ưu). Mỗi vòng đệ...
  26. nguyen minh duc

    Giải bài ntucoder NHGA - Nhà gần nhất

    Link bài: Thuật toán: Do hai ngôi nhà gần nhau nhất chắc chắn sẽ nằm cạnh nhau. Ta sẽ sắp xếp các ngôi nhà theo thứ tựtừ nhỏ đến lớn để dễ dàng tính toán. Khoảng cách giữa ngôi nhà thứ i và ngôi nhà thứ j tới đầu đường là ai và aj => Khoảng cách giữa hai ngôi nhà i và j là ai-aj (i > j)...
  27. nguyen minh duc

    Giải bài ntucoder CASO - Cặp số

    Link bài: Cách 1: Thuật toán: Ta dùng thuật toán sắp xếp dãy n số. Như vậy, các số giống nhau sẽ đứng cạnh nhau. Đến số lượng các số giống nhau bằng biến "dem", như vậy mỗi khi ai == ai-1, ta sẽ cộng dồn "dem". Một dãy con có "dem" số giống nhau thì số lượng các cặp sẽ là dem* (dem-1) /2...
  28. nguyen minh duc

    Giải bài ntucoder CDIE - Cắm điện

    Link bài Thuật toán: Gọi số lượng lỗ cắm trên ổ cắm thứ i là Ai. Ta xác định số lượng ổ cắm cần dùng ít nhất bằng cách dùng lần lượt các ổ cắm lớn nhất đến nhỏ nhất. Xác định thứ tự ổ cắm bằng cách sắp xếp các ổ theo thứ tự từ lớn đến bé Sau mỗi lần nối thêm ổ cắm thứ i, số lượng lỗ cắm...
Back