Thứ Tư, 2 tháng 1, 2019

Phím tắt liên quan đến word equation

PHÍM TẮT LIÊN QUAN ĐẾN CHÈN CÔNG THỨC TOÁN TRONG WORD/POWERPOINT

Chèn công thức

  • Bắt đầu chèn công thức toán: Alt + '+'


Số mũ và chỉ số
  • Số mũ: a^n
  • Chỉ số: a_i
  • Số vừa có chỉ số và số mũ: a_i^k

Phép toán
  • Cộng trừ: \pm
  • a x b: a \times b
  • Tích chấm: a\cdot b
  • Phân số: a/b
  • Ngoại: [a/b] hay {a/b}
  • Tổng: \sum_(phanduoi)^(phantren)<space>x_n
  • Tích: \proc_(phanduoi)^(phantren)<space>x_n

So sánh
  • Nhỏ hơn bằng: <= hay \le
  • Lớn hơn bằng: >= hay \rl
  • Khác: a \ne b
  • Sắp xỉ: \approx
  • Đồng nhất: \equiv

Tập hợp
  • Tập con của: \subset
  • Thuộc:  \in
  • Hợp 2 tập hợp: \bigcup
  • Giao 2 tập hợp: \bigcap
  • Tập rỗng: \empyset

Hình học

  • Góc: \angle



Đạo hàm
  • Đạo hàm riêng phần: \partial
  • Đạo hàm: \nabla

Ma trận
  • A=[\matrix(a&b&c@d&e&f)]:  ma trận nằm trong (), phân cách cột: &; phân cách dòng: @








Thứ Tư, 7 tháng 11, 2018

Một gợi ý để tìm hướng đến lời giải

MỘT SỐ GỢI Ý ĐỂ TÌM HƯỚNG ĐI ĐẾN LỜI GIẢI

Gợi ý 1. Lấy nhiều ví dụ và tự giải các ví dụ đó, qua đó
- Hiểu rõ bài toán hơn
- Hình dung quá trình tính toán ra kết quả
- Tìm được quy luật của kết quả với từng input tương ứng
- Quan sát những mỗi quan hệ giữa giả thuyết và kết luận

Gợi ý 2. Thay vì lấy các ví dụ cụ thể, chúng ta thử dùng các ký hiệu như bài toán mô tả
Qua đó có thể gợi ý cho chúng ta các mối quan hệ mà đôi khi nếu thế các số cụ thể chúng ta không thấy được.

Gợi ý 3. Vẽ hình những giả thuyết bài toán cho
Thay vì nhìn các con số, các ký hiệu, chúng ta thử vẽ các hình mà bài toán cho, rồi sau đó thử giải bằng hình ảnh đã vẽ. Từ đó có thể gợi ý cho chúng ta cách giải quyết bài toán.

Thứ Ba, 6 tháng 11, 2018

Phương pháp tìm số

PHƯƠNG PHÁP TÌM SỐ

Bài toán: Cho các ràng buộc A, B, C, ... hãy tìm một số x thỏa các ràng buộc đã cho

Có hai phương pháp cơ bản để giải quyết bài toán trên.
- Phương pháp thứ nhất là xét từng số x, rồi kiểm tra có thỏa điều kiện A, B, C, ... không, hay cũng có thể chọn 1 điều kiện A làm chuẩn để giới hạn miền x rồi mới quét x để kiểm tra xem x có thỏa điều kiện B, C, ... không
- Phương pháp thứ hai làm xem x gồm có n chữ số: x=x1, x2,...,xn. Rồi tìm từng chữ số một x1, rồi x2, ... cuối cùng là xn. Hẫy cũng có thể tìm x1, rồi tìm x1x2, rồi x1x2x3, ... rồi cuối cùng là x1x2...xn

Tóm tắt hai phương pháp:
Phương pháp 1: xét miền giá trị của x
- Chọn điều kiện A để tìm các số có thể của x thỏa điều kiện A
- Xét các số x thỏa điều kiện A và kiểm tra xem có thỏa điều kiện B, C, ... không

Phương pháp 2: tìm từng chữ số của x
- Xem x=x1,x2, ..., xn
- Xét x1 có bao nhiêu khả năng, chọn những x1 nào thỏa điều kiện A, B, C, ...
- Xét x1x2 có bao nhiêu khả năng, chọn x1x2 nào thỏa điều kiện A, B, C, ...
...
Cho đến khi tìm được giá trị x cần tìm

Quản lý thời gian

QUẢN LÝ THỜI GIAN


Bước 1. Xác định các mục đích cuộc sống
- Phát triển bản thân:
  + Chuyên môn, Quản lý
  + Tư duy: tư duy logic, phương pháp học tập
  + Tĩnh tâm
  + Sức khỏe
- Gia đình: dạy con, chăm sóc gia đình
- Công việc

Bước 2. Xác định các nhiệm vụ quan trọng
- Số lượng: khoảng 2-3 nhiệm vụ
- Tiêu chuẩn của nhiệm vụ: theo tiêu chuẩn SMART:
  + Cụ thể
  + Đo lường được
  + Có thể đạt được
  + Thích đáng với hoàn cảnh cụ thể
  + Có thời hạn cụ thể

Bước 3. Lên lịch hoạt động tuần
- Gán nhiệm vụ với thời gian cụ thể trong tuần

Bước 4.
... còn tiếp

Tìm kiếm nhị phân và ứng dụng

TÌM KIẾM NHỊ PHÂN

Bài toán 1. Cho dãy a[1], a[2], ..., a[n] không giảm. Hãy tìm vị trí trong dãy a có giá trị bằng x.
Thuật toán: binary_search(a.begin(), a.end(), x)



Bài toán 2. Cho dãy a[1], a[2], ..., a[n] không giảm. Hãy tìm vị trí nhỏ nhất trong dãy a có giá trị lớn hơn hay bằng x.
Thuật toán: lower_bound(a.begin(), a.end(), x)


Bài toán 3. Cho dãy a[1], a[2], ..., a[n] không giảm. Hãy tìm vị trí nhỏ nhất trong dãy a có giá trị lớn hơn x.
Thuật toán: upper_bound(a.begin(), a.end(), x)


Ứng dụng của lower_bound và upper_bound
1. Tìm đoạn phần tử giá trị bằng x
vector<int>::interator l, r;
int left, right;

l = lower_bound(a.begin(), a.end(), x);
r = upper_bound(a.begin(), a.end(), x);

left = l-x.begin();
right = r-x.begin()-1;

2. Đếm số lượng phần tử nhỏ hơn x
left = lower_bound(a.begin(), a.end(), x);
nums= left-a.begin()-1;

2. Đếm số lượng phần tử lớn hơn x
right = lower_bound(a.begin(), a.end(), x);
nums= a.end()-right;

Thứ Năm, 1 tháng 11, 2018

Quản lý là gì?

QUẢN LÝ LÀ GÌ?


Người làm quản lý là người có nhiệm vụ:
  1. Xác định mục tiêu
  2. Cung cấp, tổ chức các nguồn lực
  3. Khích lệ nhân viên
  4. Giám sát các kết quả
  5. Cải thiên hiệu quả làm việc

Cụ thể như sau:
- Xác định mục tiêu: xác định mục tiêu của tổ chức, của đơn vị, của nhóm làm việc, của mọi nhân viên của mình.
- Cung cấp, tổ chức các nguồn lực: cung cấp, tổ chức các nguồn lực để thực hiện được các mục tiêu
- Khích lệ nhân viên: trao đổi và khích lệ để nhân viên hoàn thành các mục tiêu đặt ra
- Giám sát các kết quả: giám sát các kết quả làm việc của nhân viên so với mục tiêu đã đặt ra
- Cải thiên hiệu quả làm việc: cải thiện hiệu quả làm việc bằng cách phát triển năng lực bản thân và năng lực của nhân viên

Mỗi nhiệm vụ của người quản lý đề ra ở trên cần phải được thực hiện hiệu quả. Để thực hiện hiệu quả nhiệm vụ của người quản lý, chúng ta cần tìm hiểu các lý thuyết liên quan đến từng nhiệm vụ trong các công trình nghiên cứu.

Lý do chia sẽ kiến thức

LÝ DO CHIA SẼ KIẾN THỨC


Tại sao chúng ta nên chia sẽ những gì chúng ta biết?

Lý do người ta chia sẽ kiến thức và nên chia sẽ kiến thức là:
1. Để giúp đỡ những người cần có kiến thức đó
Giúp đỡ mọi người có thể xuất phát từ:
- Những khó khăn mà mình đã gặp phải, nhưng không tìm được ai, tài liệu nào để hỗ trợ cho chúng ta. Nên chúng ta chia sẽ chỉ đơn giản là để giúp đỡ những ai  gặp phải những khó khăn như chúng ta đã gặp.
- Xuất phát từ tâm lý cá nhân là cảm thấy mình có giá trị khi khi mình có thể giúp đỡ được ai đó.

2. Chia sẽ kiến thức là một phương pháp học hiệu quả:
Chúng ta học lần thứ nhất khi chúng ta giải quyết vấn đề. Khi chúng ta giải quyết vấn đề chúng ta sẽ phân tích vấn đề, rồi chọn mô hình đã biết để giải quyết khó khăn trước mắt. Khi không giải quyết được chúng ta chọn lại mô hình khác, hay dựa trên những logic phân tích được chúng ta tinh chỉnh lại phương pháp đã có để giải quyết vấn đề. Qua việc giải quyết vấn đề như vậy chúng ta sẽ học cách phân tích đề, học cách chọn mô hình, học cách tinh chỉnh mô hình, nhưng mục tiêu cuối cùng chúng ta nhắm tời là giải cho được vấn đề đang gặp, còn quá trình đi đến lời giải vấn đề có mức đô ưu tiên thấp hơn.

Chúng ta học lần thứ hai khi chúng ta có thời gian suy ngẫm lại vấn đề đã giải quyết. Khi chúng ta chia sẽ kiến thức (như viết blog, viết sách, giảng dạy, ...) đó là cơ hội tuyệt vời để chúng ta suy ngẫm lại. Bằng phương tiện chia sẽ, chúng ta sẽ:
  + Suy ngẫm, nghiền ngẫm lại những điều đã biết
  + Nhìn nhận lại quá trình suy nghĩ, và đặt ra những câu hỏi như: vấn đề cốt lõi ở đây là gì? Tại sao đi theo con đường đó thì giải quyết vấn đề? Tạo sao chúng ta bị chi phối làm đi lạc khỏi lời giải của vấn đề, ...
  + Liên kết những ý tưởng khác lại với nhau
  + Sắp xếp lại ý tưởng cho rành mạch

Như vậy, việc chia sẽ kiến thức vừa là cơ hội để giúp đỡ người khác, vừa là cơ hội để nghiền ngẫm, học tập để thấu hiểu vấn đề hơn.



Thứ Tư, 31 tháng 10, 2018

Cách tiếp cận kiến thức mới

CÁCH TIẾP CẬN KIẾN THỨC MỚI


Kiến thức mới có thể ví như là vùng đất mới mà lần đầu tiên chúng ta tiếp cận, khám phá. Cho nên khi học một kiến thức mới chúng ta sẽ lúng túng, vụng về là chuyện thường tình. Tuy nhiên chúng ta có thể tiếp cần kiến thức dễ dàng hơn, dễ ghi nhớ hơn nếu chúng ta có phương pháp tiếp cận hiệu quả. Phương pháp sau là một gợi ý để chúng ta có thể tiếp cận kiến thức mới một cách nhanh chóng

Bước 1. Bài toán / Vấn đề:
Phát biểu ngắn gọn bài toán/vấn đề muốn giải quyết

Bước 2. Nêu hiệu quả của kiến thức/phương pháp mới để giải quyết bài toán trên

Bước 3. Biểu diễn
Nêu định nghĩa/khái niệm cốt lõi của phương pháp

Bước 4. Các phép toán
Nêu các phép toán/thao tác của phương pháp cung cấp


Lý do nên tham gia các kỳ thi lập trình

LÝ DO NÊN THAM GIA CÁC KỲ THI LẬP TRÌNH


Mục đích của thi lập trình: 
Mục đích của thi lập trình (competitive programming) là viết chương trình máy tính để giải quyết các vấn đề liên quan đến logic và toán học. Các bài toán cần giải quyết nằm trong phạm vi: tổ hợp, lý thuyết số, lý thuyết đồ thị, hình học, phân tích chuỗi và các cấu trúc dữ liệu [1].

Tiến trình giải quyết vấn đề: 
Giải quyết vấn đề bằng lập trình thường gồm 4 bước chính:
(1) đọc hiểu rõ chi tiết vấn đề
(2) thiết kế thuật toán hiệu quả
(3) cài đặt thuật toán bằng ngôn ngữ cụ thể
(4) kiểm thử, debug chương trình kỹ càng

Lợi ích của việc tham gia thi lập trình:
Qua đó chúng ta thấy khi tham gia thi lập trình sẽ giúp chúng ta:
1. Kiến thức: chúng ta sẽ có đầy đủ kiến thức cơ bản về phương pháp giải quyết vấn đề bằng lập trình như: cấu trúc dữ liệu, thuật toán, phương pháp thiết kế thuật toán
2. Kỹ năng: chúng ta sẽ có kỹ năng đọc đề, kỹ năng phân tích logic, kỹ năng sử dụng các kỹ thức uyển chuyển, kỹ năng thiết kế thuật toán, kỹ năng sử dụng ngôn ngữ lập trình, kỹ năng debug, kỹ năng code các ý thành các chương trình
3. Thái độ: 
- Tự tin: vì đã có đầy đủ kiến thức cơ bản, kỹ năng sử dụng các kiến thức cơ bản một cách uyển chuyển, linh hoạt
- Khiêm tốn: bên cạnh sự tự tin về những gì mình có, chúng ta cũng sẽ có thái độ khiêm tốn vì có nhiều vấn đề không phải lúc nào chúng ta cũng giải quyết được, cần phải có thời gian, phương pháp tiếp cận phù hợp.
- Chú ý chi tiết, kỹ càng: trước khi thiết kế ra thuật toán hiệu quả, chúng ta cần tận dụng từng ràng buộc của bài toán (chú ý chi tiết từng ràng buộc của bài toán), nhìn nhận các kiến thức ở nhiều góc nhìn khác nhau (các kiến thức được xem xét kỹ càng).
- Điềm tĩnh: Qua giải quyết các vấn đề khó, chúng ta sẽ được tôi luyện thái độ điềm tĩnh trong suy nghĩ, bình tĩnh phân tích từng nội dung của vấn đề.
4. Cơ hội: khi đã có kiến thức, kỹ năng giỏi, chúng ta mới có cơ hội để giúp đỡ, chia sẽ các kiến thức kỹ năng với những người cần giúp đỡ.

Tài liệu tham khảo
[1]. https://en.wikipedia.org/wiki/Competitive_programming


Thứ Ba, 30 tháng 10, 2018

Chiến lược thi ACM/ICPC

CHIẾN LƯỢC THI ACM/ICPC

Vai trò thành viên trong nhóm: 
  1. Vai trò Người đọc đề (A): Chuyên đọc đề và giải thích đề
  2. Vai trò Người lập trình (B): Tập trung code
  3. Vai trò Người giám sát (C): Quan sát người B code và phát hiện lỗi để báo ngay


1. Bắt đầu nhận đề thi
Lúc đầu:
- Cả 3 thành viên đều đóng vai trò người đọc đề: đọc lướt qua các đề bài để xác định đề bài dễ nhất. 
- Theo dõi bảng scoreboard để xác định bài dễ nhất (được nhiều nhóm giải được nhất)

Sau khi đã xác nhận bài dễ nhất: 
  + Hai người sẽ đóng vai B, C: Tập trung đọc kỹ đề và giải quyết bài toán đó
  + Người thứ ba đóng vai trò Người đọc đề: Tìm đề bài dễ tiếp theo, đọc hiểu kỹ để giải thích lại cho hai người còn lại sau này.


2. Giải quyết bài toán
Bước 1. Đọc đề và tìm thuật toán: Cả B và C:
  + Cùng đọc hiểu kỹ bài toàn
  + Lấy nhiều ví dụ và cùng giải thử
  + Một người đưa ra ý tưởng giải, một người lắng nghe và nhận xét, xác định đúng không, và bổ sung khi cần
  + Đưa ra các bước giải cụ thể
  + Xác định các hàm cần viết
  + Viết ra giấy các bước 
  + Viết ra giấy tên các hàm cần cài đặt

Bước 2. Cài đặt chương trình
  + Một người đóng vai trò viết code
  + Một người đóng vai trò quan sát, phát hiện sai sót
  + Nếu đang cài đặt mà người viết code bị  bí thì hai người đổi vai trò cho nhau

Bước 3. Test và Debug
  + Chạy các test case
  + Debug các lỗi

Bước 4. Submit bài
  + Bỏ các dòng lệnh debug
  + Submit bài

3. Qua bài mới
Sau khi giải quyết thành công một bài thì qua bài dễ kế tiếp
- Người A trình bày nội dung bài toán
- Nguời B, C đọc lại đề lần nữa để xác định nội dung giải thích và tiến hành giải quyết bài toán
- Người A tìm bài dễ tiếp theo để đọc hiểu đề