toi

TOI19 explorer - นักสํารวจ (Explorer)

🏠 รวมเฉลย TOI19

💎 problem.pdf

🎉 solution.cpp

🤢 Math (การนับ permutation / combination)!!

ให้แปลงลำดับการเดินให้กลายเป็นกราให้ได้ก่อน โดยใช้ stack

เช่น 1 2 4 2 5 2 1 3 1 เป็น

1 => {2, 3}
2 => {4, 5}
3 => {}
4 => {}
5 => {}

แล้วแต่ละ node สามารถสลับลูกได้ตามใจ

ตัวอย่างข้างบนจะเป็น

1 => {2, 3}   = fac(2) * ways[2] * ways[3]   = 4 ways *
2 => {4, 5}   = fac(2) * ways[4] * ways[5]   = 2 ways
3 => {}       = fac(0)                       = 1 ways
4 => {}       = fac(0)                       = 1 ways
5 => {}       = fac(0)                       = 1 ways

ส่วนวิธีไล่ stack คือ

แนะนำให้อ่านเรื่อง Tree Traversal Techniques เพิ่มเติม จะเป็นเรื่อง

ในโจทย์ข้อนี้จะเป็นการผสม Preorder Traversal และ Postorder Traversal โดยถ้าให้รูปแบบการเดินมา 2 แบบข้างบน จะแปลงกลับเป็นกราฟได้