Posts

Showing posts from November, 2015

Cơ bản về thuật toán đệ quy

Image
1. Đệ quy là gì ? Một đối tượng được gọi là đệ quy nếu nó được mô tả thông qua định nghĩa của chính nó. Nghĩa là, các đối tượng này được định nghĩa một cách quy nạp từ những khái niệm đơn giản nhất cùng dạng với nó. Trong toán học và tin học có rất nhiều đối tượng như thế. VD : – Số tự nhiên được định nghĩa như sau : 0 là một số tự nhiên Nếu k là một số tự nhiên thì k+1 cũng là một số tự nhiên Theo đó, ta sẽ có : 1=0+1 là số tự nhiên, 2=1+1 cũng là một số tự nhiên,….Cứ như vậy ta sẽ định nghĩa được các số tự nhiên khác lớn hơn. Do đó, số tự nhiên là khái niệm mang bản chất đệ quy. – Định nghĩa giai thừa của n (n!) : Khi n=0, ta có 0!=1 Khi n>0, ta có n!=(n-1)! x n Như vậy, ta suy ra : 1! = 0! x 1, 2! = 1! x 2,… –> giai thừa cũng là một khái niệm mang tính đệ quy. 2. Bài toán đệ quy Đó là những bài toán mang bản chất đệ quy. Nghĩa là những bài toán này có thể được phân rã thành các bài toán nhỏ hơn, đơn giản hơn nhưng có cùng dạng với bài toán ban đầu. Nhữ...

13/11/2015

Luyện đề Đại học Nha Trang (150 phút) Bài A. Đường một chiều Bài B.  Arga.io Bài C.  Dãy số Bài D.  Vượt sông Bài E.  Xe khách Bài F.   Hai dãy con Bài G.  Đổi tiền

19/11/2015 10TIN

Image
Bài tập chiều 19/11/2015 PHÂN TÍCH SỐ ĐÁNH BIA LŨY THỪA XÂU Code bài table buổi sáng (điểm tối đa) uses math, sysutils; var fi, fo: text;     n, i: longint;     z, t, j, k, m: int64;     a: array [0..15] of int64;     s, st: ansistring; begin         assign(fi, 'table.inp'); reset(fi);         assign(fo, 'table.out'); rewrite(fo);         readln(fi, n, t);         a[0] := 0;         a[1] := 9;         a[2] := 189;         a[3] := 2889;         a[4] := 38889;         a[5] := 488889;         a[6] := 5888889;         a[7] := 68888889;         a[8] := 788888889;         a[9] := 8888888889;         a[10] := 98888888889; ...

[Code Jam]-Round D APAC Test 2016

Image
Link đề và test:  https://code.google.com/codejam/contest/11214486/dashboard Bài A. Dynamic Grid Trên một lưới kích thước R dòng, C cột, giá trị của mỗi ô có thể là 0 hoặc 1. Ta thực hiện N thao tác trên lưới đó, các thao tác có thể là: - Thao tác M: thay đổi giá trị của một ô trong lưới sang 0 hoặc 1 - Thao tác Q: Xác định số lượng miền liên thông giá trị 1. Một miền liên thông giá trị 1 được xem là một tập các ô mà tất cả đều là 1, trong miền đó mọi ô đều có thể tới được từ bất kì ô nào bằng cách di chuyển giữa các ô dọc theo cạnh (không phải góc). INPUT: - Dòng 1: T là số lương testcase. Tiếp theo là T test Mỗi Test: dòng đầu chứa 2 số R,C. R dòng tiếp theo, mỗi dòng chứa các kí tự 0,1. Các dòng này biểu diễn trạng thái ban đầu của lưới. Dòng tiếp theo chứa một số nguyên N chỉ số lượng thao tác trên lưới. N dòng tiếp theo, mỗi dòng thể hiện một thao tác. Tất cả các thao tác M sẽ có cấu trúc M x y x với nghĩa: ô ở vị trí dòng x, cột y sẽ chuyển thành giá trị z. Tất cả c...

[Brute Force]-Games

Link đề và test:  http://codeforces.com/problemset/problem/268/A Manao làm việc trong một kênh truyền hình thể thao. Anh dành nhiều thời gian xem các trận bóng đá ở các nước. Sau một hồi xem, anh nhận thấy một quy luật. Ví dụ, mỗi đột có 2 loại áo đồng phục: đồng phục ở sân nhà và đồng phục ở sân khách. Khi đội bóng chơi ở sân nhà, các cầu thủ mặc đồng phục sân nhà. Khi thi đấu ở sân khách thì mặc đồng phục khách. Có một ngoại lệ: khi đồng phục sân nhà của đội chủ nhà trùng với đồng phục khách của đội mình, đội nhà sẽ mặc đồng phục khách tại sân nhà mình. Với mỗi đội, màu của hai loại đồng phục là khác nhau. Có N đội bóng tham gia giải vô địch quốc tế. Đội bóng gồm có n*(n-1) trận: mỗi đội mời các đội khác tới thi đấu tại sân của mình. Khi đó, Manao muốn biết: có bao nhiêu lần đội chủ nhà phải mặc đồng phục khách khi thi đấu tại sân nhà trong suốt giải đấu? Chú ý: thứ tự diễn ra trận đấu không ảnh hưởng tới số này. Bạn biết các màu đồng phục của các đội. Để đơn giản, các màu ...

[Brute Force]-Expression

Petya học ở một ngôi trường nhỏ và anh ấy rất thích học toán. Lớp của anh ấy đang học về các biểu thức toán học. Vào một tiết học cuối, thầy giáo viết lên bảng 3 số nguyên dương a,b,c. Công việc là: thêm các phép +, * và các dấu ngoặc () giữa các số để sao cho kết quả phép toán là lớn nhất có thể. Hãy xem ví dụ: giả sử giáo viên viết 3 số là 1,2 và 3 trên bảng, dưới đây là một số cách đặt dấu và ngoặc thích hợp: 1+2*3=7 1*(2+3)=5 1*2*3=6 (1+2)*3=9 Bạn có thể chèn phép tính giữa hai số a và b hoặc b và c; bạn không thể hoán đổi vị trí hai số. Ví dụ, trong ví dụ trên bạn không thể đặt (1+3)*2 Dễ thấy kết quả lớn nhất nhận được với ba số trên là 9. Công việc của bạn: cho 3 số a,b,c; đưa ra kết quả lớn nhất có thể. INPUT Ba số a,b,c trên các dòng khác nhau (1..10) OUTPUT In ra giá trị biểu thức lớn nhất có thể Sample test(s) input 1 2 3 output 9 input 2 10 3 output 60

[Brute force]-Vasya and Socks

Link đề và test: http://codeforces.com/problemset/problem/460/A Vasya có n đôi tất. Vào buổi sáng, Vasya đi tất trước khi đến trường. Khi anh ấy trở về nhà vào buổi tối, Vasya cởi bỏ tất và vứt đôi tất đó đi. Vào các ngày thứ m (các ngày thứ m, 2m, 3m,...) mẹ anh mua cho anh ta một đôi tất. Cô ấy làm việc đó vào buổi tối muộn, do đó Vasya không thể đi đôi tất mới vào ngay ngày hôm sau. Hỏi có bao nhiêu ngày liên tiếp Vasya không có tất để đi? INPUT Hai số nguyên N, M cách nhau bởi dấu cách (N in[1..100], M in [2..100]) OUTPUT Một số nguyên duy nhất là đáp án Sample test(s) input 2 2 output 3 input 9 3 output 13 Giả thích: - Test 1: Vasya có 2 ngày đầu để đi 2 đôi mà anh ta có, vào ngày thứ 3 anh ấy đi đôi tất mà mẹ mua ngày thứ 2. - Test 2: Vasya dành 9 ngày đầu để đi hết các đôi của mình, 3 ngày sau đó sẽ đi các đôi tất mẹ mua vào ngày thứ 3,6,9. Sau đó còn 1 ngày anh ấy đi đôi tất mẹ mua ngày thứ 12

[Brute Force]-Beautiful Year

Năm 2013 là năm đầu tiên kế từ năm 1987 mà trong số chứa các số nguyên khác nhau. Bạn được yêu cầu giải quyết bài toán sau: cho một số (chỉ một năm) hãy tìm năm bé nhất mà lớn hơn năm được cho mà chỉ chứa các số nguyên khác nhau. INPUT Một số nguyên y [1000..9000] chỉ số năm OUTPUT In ra một số nguyên duy nhất chỉ năm gần nhất mà lớn hơn năm đã cho mà trong số đó chứa các số nguyên khác nhau đôi một. Sample test(s) input 1987 output 2013 input 2013 output 2014

[Brute force]-Lucky Division

Link đề và test: http://codeforces.com/problemset/problem/122/A Petya thích các số may mắn. Mọi người đều biết rằng các số may mắn là các số nguyên dương và trong thành phần của số đó chỉ chứa các số may mắn là 4 và 7. Ví dụ: số 47, 744, 4 là các số may mắn, số 5, 17, 467 thì không phải là số may mắn. Petya gọi một số là cực kì may mắn nếu như số đó chia hết cho một vài số may mắn. Hãy giúp anh ấy xác định một số N có phải là số cực kì may mắn hay không. INPUT Một số nguyên N trong đoạn [1..1000] OUTPUT In ra YES nếu N là một số cực kì may mắn và NO nếu ngược lại. Sample test(s) input 47 output YES input 16 output YES input 78 output NO

[Brute force]-Team

Link đề và test: http://codeforces.com/problemset/problem/231/A Vào một ngày ba người bạn thân là Petya, Vasya và Tonya quyết định thành lập một nhóm và tham gia vào cuộc thi lập trình. Các thành viên thường xuyên được yêu cầu làm một vài bài tập trong suốt quá trình diễn ra cuộc thi. Trước khi cuộc thi bắt đầu, các bạn quyết định rằng họ sẽ thực hiện 1 bài nếu ít nhất 2 người trong số họ biết chắc sẽ làm được, ngược lại nhóm bạn sẽ không làm bài tập đó. Cuộc thi gồm n bài toán. Với mỗi bài toán, ta biết chắc chắn bạn nào có thể giải. Hãy giúp nhóm bạn tìm được số lượng các bài toán mà họ quyết định làm. INPUT Dòng đầu tiên chứa một số nguyên n trong đoạn [1..1000]-chỉ số lượng bài tập trong cuộc thi N dòng tiếp theo mỗi dòng chứa 3 số nguyên, mỗi số chỉ có thể là 0 hoặc 1. Trên 1 dòng, nếu số đầu tiên là 1 thì Petya là người biết cách làm, ngược lại cô ấy ko biết cách làm. Tương tự như vậy đối với 2 số còn lại, các số trên dòng cách nhau một dấu cách. OUTPUT: In ra một ...

[Brute force]-Watermelon

Link đề và test:  http://codeforces.com/problemset/problem/4/A Vào một ngày hè nóng nực Pete và bạn Billy quyết định mua một quả dưa hấu. Họ chọn quả to nhất và ngon nhất theo ý của họ. Sau đó họ cân quả dưa, nặng w kg. Họ vội về nhà, họ đang rất khát, và quyết định chia quả dưa đó, nhưng việc đó không dễ chút nào. Pete và Billy rất thích các số chẵn nên họ muốn chia quả dưa thành hai phần mà mỗi phần bằng một số chẵn kg, các phần không nhất thiết phải bằng nhau. Hai bạn vô cùng mệt mỏi và muốn việc chia thực hiện càng nhanh càng tốt, bạn hãy giúp đỡ họ chia theo cách họ muốn. Tất nhiên mỗi người sẽ được một phần dưa (không thể là số âm) INPUT Dòng duy nhất chứa một số nguyên w [1..100] chỉ trọng lượng của quả dưa. OUTPUT In ra YES nếu có thể chia quả dưa thành 2 phần, mỗi phần là một số chẵn kg. in ra NO nếu không thể chia Sample test(s) input 8 output YES Giải thích: hai cậu bé có thể chia thành 2 phần 2kg và 6kg hoặc 4-4kg

Luyện tập đồ thị cơ bản

DFS-BFS cơ bản 1. VMUNCH 2. PWALK