Đáng lẽ bài này phải post lên Facebook, nhưng mình viết trên này cho dễ định dạng.
Nhớ quê ra đứng đỉnh đèo, bỗng đâu thấy một chú mèo .. gâu gâu!
Dừng chân đứng lại trên cầu, bỗng đâu thấy một con trâu vàng vàng..
Thursday, 31 December 2020
Friday, 18 December 2020
Codechef December Challenge 2020 - Division B
Trước hoặc trong những giờ deadline căng thẳng, mình thường mở coding contest lên và dành nhiều chất xám + thời gian cho nó, trong khi đáng lẽ ra nên dành cho những deadline hay bài tập kia.
Contest này làm được 4 bài, đáng lẽ ra thời gian viết cái editorial này mình nên ngồi đọc sách để làm quiz thì lại bỏ thời gian ra ngồi gõ cạch cạch viết blog. Ngạc nhiên chưa.
Và làm được 4 bài là do đề dễ, không phải do mình giỏi.
Friday, 20 November 2020
Educational Codeforces Round 98 (Rated for Div. 2) - A & C
Deadline ngập đầu xong tự rước thêm deadline vào thân, xong tự dưng buổi tối
lại ngồi gõ code contest.
Vẫn như mọi khi, code nhiều nhưng vẫn thiếu não.
Monday, 2 November 2020
Friday, 23 October 2020
Friday, 16 October 2020
Bubble Cup 13 - Finals [Online Mirror] - problem G
G. Years
Lược dịch: Trong một sứ mệnh du hành vũ trụ, người ta phát hiện bằng chứng đã từng tồn tại nền văn minh ở một hành tinh nọ. Họ may mắn tìm được một quyển sách ghi toàn bộ năm sinh và năm mất của các cư dân đã từng tồn tại trên hành tinh này và điều thú vị là những con số được ghi trong sách đều nằm trong khoảng (1, 10⁹)! Do đó, hành tinh này được gọi là Longlifer.
Để biết nhiều hơn về dân số trong quá khứ của Longlifer, các nhà khoa học cần xác định năm mà có nhiều cư dân còn sống nhất, cũng như dân số của Longlifer vào năm đó. Nhiệm vụ của bạn là giúp các nhà khoa học giải quyết vấn đề này!
Tuesday, 13 October 2020
Tuesday, 6 October 2020
Cheat MateQuiz
MateQuiz is a site that allows you to create a quiz and challenge your friend's knowledge about you. This site's advantage is it does not require Facebook connection before creating a new quiz / submitting an answer.
For educational purposes only.
Friday, 2 October 2020
Monday, 28 September 2020
Sunday, 27 September 2020
Codechef September Lunchtime 2020 - Division 2
Một thầy trong trường mình từng bảo, "chỉ khi nào các em vứt bỏ được sự thông minh, khi đó các em mới làm Toán được". Tối hôm qua mấy cái problem này là Toán, nhưng thực ra chỉ cần suy nghĩ đơn giản tí là xong.
Dù là làm việc gì cũng phải suy nghĩ cẩn thận nhưng mình lại là một giống loài đặc biệt gì đấy luôn làm hỏng những gì đơn giản nhất bằng cách phức tạp hóa vấn đề đến một mức độ mà bản thân mình cũng ngạc nhiên là làm sao lại suy nghĩ làm gì cho cực. Đến khổ/
Sunday, 20 September 2020
Codeforces Round #671 (Div. 2) problem A & D1
Lâu lắm mới dám quay lại làm Codeforces. Nhưng cái vấn đề vẫn là làm nhiều vẫn ngu, vô thưởng vô phạt.
Sunday, 13 September 2020
Trỏ subdomain về Blogger
Bài viết dành cho các bạn chỉ có domain mà không có host như mình, với điều kiện là bạn được toàn quyền truy cập vào DNS Zone để có thể chỉnh sửa DNS cũng như các records của domain.
Thật ra là nhiều chỗ post tutorial này rồi nên mình cũng viết cho vui để sau này có trục trặc gì thì nhìn lại thôi chứ cũng chẳng có ai đọc đâu. Vậy nhé.
Đặt vấn đề: mình có một tên miền, tạm gọi là example.com. Vì tài chính có hạn, mình muốn example.com là email host và cùng lúc làm blog domain. Muốn như thế, bằng một cách xử lý cồng kềnh, mình sẽ trỏ một subdomain, tạm gọi là blog.example.com về blogger và giữ nguyên example.com làm email host.
Vấn đề phát sinh: do mình không mua host nên không được hỗ trợ cPanel aka không có chức năng hỗ trợ tạo subdomain. Vì vậy mình sẽ phải tự tạo subdomain bằng các công cụ chỉnh sửa domain records. Về nguyên tắc là chỉ cần tạo một subdomain xong thì cứ trỏ subdomain đó về Blogger giống như trỏ domain về Blogger, thế là xong.
1. Trỏ domain về Blogger
Để trỏ domain về Blogger thì bạn làm theo hướng dẫn trong post này là ok. Mình không viết lại vì tutorial đã quá rõ ràng rồi, viết lại thì càng thêm sai thôi.
Tuy nhiên, ta có một chút thay đổi và nếu bạn để ý thì sẽ thấy rõ: hướng dẫn bên trên đang trỏ domain về Blogger trong khi ta đang cần trỏ subdomain về Blogger cơ mà?
Thật ra cách giải quyết khá đơn giản: tại ô domain bạn cứ điền nguyên subdomain vào, trong trường hợp này là blog.example.com.
Khoan, subdomain này đã tồn tại đâu mà trỏ về?
2. Tạo subdomain
Ở bước cơ bản để trỏ domain về Blogger, bạn sẽ tạo 2 CNAME records: www và secret key. Bây giờ, hãy thay record www bằng subdomain của bạn và mọi việc hoàn tất rồi đó.
Nếu bạn chú ý tấm hình bên trên thì Blogger cũng hướng dẫn cách này rồi, chỉ là việc tạo subdomain nó hơi rối nếu như bạn chỉ mua domain mà không mua host như mình rồi lại tìm cách tạo subdomain tới lui, trong khi chỉ cần đọc kỹ một chút hướng dẫn là ổn.
3. Tổng kết.
Đến đây bạn sẽ cần đợi một chút (~ 1h) để mọi thứ hoạt động tốt. Chú ý là bạn đang trỏ subdomain về Blogger bằng cách thay thế CNAME www thành subdomain của bạn, nên truy cập vào www.example.com sẽ không được nhé. Muốn có www thì phải có vài magic khác, nhưng mình sẽ không đề cập đến trong post này để tránh loãng post.
Mong các bạn vui/
* example.com vẫn truy cập bình thường và chỉ được dùng làm ví dụ trong post này.
Shitpost đêm khuya #9: Cúi đầu
Friday, 11 September 2020
Sunday, 6 September 2020
Wednesday, 26 August 2020
Educational Codeforces Round 94 (Rated for Div. 2) - Problem A
> Write blog
> No one gaf
Actually, this is a big achievement for me anons, since I wrote this blog for me and only me to read.
Wednesday, 19 August 2020
Codechef August Challenge 2020 - Division 2
Saturday, 15 August 2020
Educational Codeforces Round 93 - Problem A&B
> Joined contest
> Solved 2 out of 7
> pain.png
> Monday is the first day of last week before I travel back home
Idk anons, may be this is the last nice week?
Thursday, 13 August 2020
Codeforces Round #664 (Div. 2) Problem A & B
> Be me, have final tests and still spending time to do competitive programming.
Don't. Seriously, don't.
Wednesday, 12 August 2020
Friday, 7 August 2020
Sunday, 26 July 2020
CHEFSTEP - July Lunchtime 2020 Division 2
Thursday, 23 July 2020
A. Common Subsequence - Codeforces Round #658 (Div. 2)
Tuesday, 21 July 2020
1385B - Codeforces Round #656 (Div. 3)
Saturday, 18 July 2020
FACEFRND - Friends of Friends
Đề bài:
Bob hay lên mạng xã hội chơi và giờ Bob đang thắc mắc: không biết khai niệm "Bạn của Bạn (Friends of Friends)" trong mạng xã hội đó là sao? Nếu $X$ là bạn của Bob, $Y$ là bạn của $X$ nhưng $Y$ không phải là bạn của Bob thì $Y$ là một người "Bạn của Bạn" của Bob. Bạn được yêu cầu tìm số lượng người "Bạn của Bạn" của Bob. (Mỗi người trong mạng xã hội đó được định danh bằng một ID 4 chữ số).
Input:
Dòng đầu tiên chứa một số nguyên $N\ (1 \leq N \leq 1000)$ là số lượng người trong danh sách bạn bè của Bob. Tiếp sau đó là $N$ dòng:
- Đầu mỗi dòng là ID người bạn của Bob.
- Tiếp sau đó là số nguyên $M\ (1 \leq M \leq 100)$ là số lượng người trong danh sách bạn bè của người đó.
- Tiếp sau đó là $M$ ID lần lượt là ID của từng người bạn (ngoại trừ Bob).
Output:
In ra một số nguyên duy nhất - số lượng người "Bạn của Bạn" của Bob.
Ví dụ:
Input:
$3$
$2334$ $5$ $1256$ $4323$ $7687$ $3244$ $5678$
$1256$ $2$ $2334$ $7687$
$4323$ $5$ $2334$ $5678$ $6547$ $9766$ $9543$
Output:
$6$
Hướng dẫn giải
Từ ví dụ bên trên, ta có thể chỉ ra được những người "Bạn của Bạn" trong ví dụ là $3244, 5678, 6547, 7687, 9543$ và $9766$. Tổng quát về cách giải: ta ghi những ID là bạn của Bob (ID đầu tiên mỗi dòng) vào 1 mảng, ghi những ID còn lại vào một mảng. Nếu ID trong mảng bạn Bob tồn tại trong mảng còn lại thì ID đó không được tính là "Bạn của Bạn".
Bài này tiện nhất là dùng STL set vì tìm kiếm sẽ nhanh hơn, kiểu dữ liệu cũng nên để là string thay vì int vì ID vẫn có thể có số 0 ở đầu. Code mẫu mình để ở đây.
Chốt:
Happy coding!
Thursday, 25 June 2020
Install & configure Atom for C/C++ learning.
The reason why I choose Atom
Installing Atom.
Customisation.
C/C++ development.
- Compiler: MinGW.
- Packages: gpp-compiler (for compiling C++ code) + linter + linter-gcc2 + linter-ui-default (flagging errors live).
Final
Friday, 12 June 2020
Friday, 29 May 2020
Cốc cafe nhà Nội
Wednesday, 13 May 2020
Mất file mã nguồn!
Tuesday, 21 April 2020
LIFTME - Lift Requests (Codechef April Cookoff 2020 - Divison 2)
- Ở truy vấn thứ 1: 1 2, thang máy ban đầu ở tầng 0 -> 1, rồi từ 1 -> 2 => 2 tầng.
- Ở truy vấn thứ 2: 0 1, thang máy đang ở tầng 2 -> 0, rồi từ 0 -> 1 => 3 tầng.
- Ở truy vấn thứ 3: 1 0, thang máy đang ở tầng 1 -> 0 => 1 tầng
Wednesday, 15 April 2020
Codechef April Long Challenge 2020 - Division 2
SQRDSUB - Squared Subsequence
UNITGCD - Unit GCD
Tuesday, 14 April 2020
STRNO - Strange Number
Tóm tắt đề bài: bạn được cho 2 số nguyên dương X và K. Xác định xem tồn tại một số nguyên dương A sao cho A có đúng X ước số, trong X ước số đó có K ước số là số nguyên tố.
COVIDLQ - COVID Pandemic and Long Queue
Code mẫu (C++)
Happy coding!
CARSELL - Sell All The Cars
Saturday, 11 April 2020
Saturday, 4 April 2020
UCV2013J - Valences
Link đề bài
Link hướng dẫn giải + code mẫu
Happy coding!
Thursday, 2 April 2020
SWPDGT - Codechef March Lunchtime 2020 - Division 2
Link đề bài trên Codechef - bản dịch tiếng Việt
Hướng dẫn giải:
Code mẫu (C++)
Wednesday, 1 April 2020
Shitpost đêm khuya #8
Saturday, 28 March 2020
Codechef March Lunchtime 2020 - Khi COVID-19 lan rộng đến đấu trường CP
Thế mà, contest này diễn ra theo chiều hướng tệ hơn mình tưởng. Website contest sập 15 phút, lúc 20h15 IST các nhà tổ chức thông báo sẽ thêm 15 phút bù giờ cho khoảng thời gian contest bị delay. Vấn đề là sau 15 phút, đề bài vẫn chưa thể mở, lỗi 500 vẫn diễn ra thường xuyên, downfor.io nhận định Codechef đã down.
Và đến khi Codechef trở lại, mọi thứ còn tệ hơn gấp nhiều lần.
Các submission không thể được chấm đúng giờ vì có quá nhiều submission. Nhiều đến nỗi mình sub 2 sub đầu thì mất hơn 15 phút mỗi sub mới cho ra WA verdict, đến 4 sub sau thì mỗi sub tốn gần 30 phút mới cho ra WA. Tình thế khiến mỗi competitor phải chờ mòn mỏi verdict là một, phải đau đầu vì không mở được đề mới là hai. Họ bắt đầu lập các topics trên discuss forum để khiếu nại.
Đến cuối cùng, admin đã quyết định đóng contest tháng 3. Tất nhiên là các submissions không được tính vào rating, cũng như một lời xin lỗi chân thành của đội ngũ admin đã làm cho cộng đồng dịu lại. Nhưng hơn cả, mình biết nguyên nhân của sự cố này không đến từ admin, kỹ thuật hay cộng đồng. Contest này thu hút quá đông người tham gia, và tất nhiên họ tham gia vì không thể tìm được một thú tiêu khiển nào khác.
Vâng, COVID-19 đã ảnh hưởng đến một đấu trường online, nơi được xem như là bất khả xâm phạm đối với vi trùng / virus. COVID không đánh trực tiếp bằng cách làm server bệnh rồi ngã lăn đùng ra chết; nó hạn chế con người ta ra ngoài đường, hạn chế tụ tập, khiến họ phải tập trung vào những giải đấu online vốn rất ít người tham gia.
Nếu nhắc đến COVID-19, đây chắc chắn sẽ là kỷ niệm khó quên nhất đối với mình.
Nhưng vẫn có solution cho problem 1 của contest này nhé, đợi mình viết xong editorial rồi sẽ post sau.
Monday, 23 March 2020
Codechef March Cookoff 2020 - Division 2
Saturday, 21 March 2020
EDIT - Edit Distance Again
Friday, 20 March 2020
Shitpost đêm khuya #7
Monday, 16 March 2020
Codechef March Long Challenge 2020 - Division 2
Tấm hình huyền thoại của series contest codechef |
- A = 1001, B = 1001 => A ^ B = 0000A = 1001, B = 1100 => A ^ B = 0101A = 1001, B = 0110 => A ^ B = 1111A = 1101, B = 0111 => A ^ B = 1010A = 0001, B = 1101 => A ^ B = 1100A = 10000001, B = 11011101 => A ^ B = 01011100A = 00011000, B = 11000000 => A ^ B = 11011000A = 10000000, B = 00011100 => A ^ B = 10011100A = 10000000, B = 11100000 => A ^ B = 01100000Dễ dàng nhận thấy: nếu số lượng bit 1 của A và số lượng bit 1 của B cùng chẵn hoặc cùng lẻ, thì kết quả A ^ B sẽ có số lượng bit 1 là chẵn.
- Vậy ngược lại, nếu số lượng bit 1 của A và B không cùng chẵn hoặc cùng lẻ, thì A ^ B sẽ cho ra kết quả có số lượng bit 1 là lẻ.
(Minh chứng cho sự khác nhau về tốc độ giữa scanf/printf và cin/cout, đọc post này từ Geeksforgeeks)
Một trong những cách đi. Chống chỉ định người cần hình chính xác, chỉ cần hiểu nôm na là nó giống cái xương cá. |
Bạn sẽ nghĩ "đùa tôi chắc?". Trên thực tế, hãy xem thử submission #3, #4 và #1. Cách ăn trọn 100 điểm bài này, dễ nhất và nhanh nhất chính là xây dựng một đường đi sẵn và chỉ việc in nó ra thôi.
Code mẫu của cái xương cá bên trên (C++). Trên thực tế, nó là một phiên bản phức tạp hóa bằng cách dùng vector pair. Code dễ hiểu hơn của cái xương cá bên trên ở đây (cũng là C++).
Popular posts
-
(Written in English, since I've just got Grammarly installed and curious to see how it works). Since I came to college, many ...
-
MateQuiz is a site that allows you to create a quiz and challenge your friend's knowledge about you. This site's advantage is i...
-
Vậy là sau 4 năm thì tụi mình cũng chuẩn bị cút khỏi trường.
-
This is a summary of how difficult a fresh graduate could face when finding a job these days, in my own experience.
-
Lại một năm nữa trôi qua, lại viết vài dòng tóm tắt lại những gì xảy ra trong năm qua.