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...
Back