Advertisement
AquaBlitz11

Stuff about CP

Apr 23rd, 2019
287
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.56 KB | None | 0 0
  1. General idea
  2. - ลองคิด bruteforce ดู ถ้า bruteforce ได้ส่วนใหญ่ก็ dp ได้ (พวกแนวๆเลือก/ไม่เลือก, แบ่งช่วง, เลือกตัวต่อไป, เลือกว่าจะทำอะไร ไรเงี้ย)
  3. - ลองแปลงคำถามดู แทนที่จะหาน้อยสุดมากสุด ลองหาว่า "ทำ x ได้มั้ย" ถ้ามันตรวจง่ายๆ แล้วคำตอบมันเรียง ก็ binary search ได้
  4. - **อย่าพยายามยึดติดกับ pattern ใดๆ ลองคิดให้กว้าง หลายๆข้อต้องผสมผสานกันหลายอย่าง**
  5.  
  6. Common bugs
  7. - true ไม่ใช่ 1, false ไม่ใช่ 0 อย่าเอามาบวกเลข ถ้าอยากบวกแปลงเป็น int ก่อน (x?1:0)
  8. - timeout? เผลอใช้ฟังก์ชันอะไรที่มันใช้เวลาเกินคาดรึป่าว
  9. - *******************
  10. - PRINT แม่งทุกอย่างที่ขวางหน้า
  11. - เรียกฟังก์ชัน? ปรินท์แม่งเลยว่าเข้าฟังก์ชัน เรียก argument อะไร ออกฟังก์ชัน คำตอบอะไร
  12. - ลูป? ปรินท์ i j k ไปด้วยแม่งเลย
  13. - มีตาราง/array? ปรินท์แม่งทุกรอบที่มีการเปลี่ยนแปลง
  14. - ปรินท์แม่งให้หมด
  15. - PRINT PRINT PRINT PRINT PRINT
  16. - ********************
  17.  
  18. DP common bugs
  19. - topdown ลองปรินท์ argument ทุกรอบที่โดนเรียกฟังก์ชัน ละก็ปรินท์คำตอบที่ return ด้วย (รวมถึง base case****)
  20. - topdown memo ระวัง อาจจะใช้ 0 แทน "ยังไม่เคยมา" ไม่ได้ตลอด (พวกคำตอบเป็น 0 ได้ หรือว่าเป็น boolean ไรงี้)
  21. - topdown ลืม memo
  22. - เช็ค base case ทุกแบบที่เป็นไปได้ดูว่ามันให้คำตอบตรงกับนิยามจริงมั้ย (ลองดูแม่งทุกแบบเลย เช่นถ้ามีสามตัวแปรก็ลองดูว่า i=0, j=0, k=0, i=j=0, i=k=0, j=k=0, i=j=k=0 ถูกมั้ย)
  23. - bottomup ปรินท์ตาราง **รวมถึงปรินท์ base case ทุกช่องด้วย** แล้วดูว่า base case ให้ผลตรงกับ topdown มั้ย
  24. - bottomup เช็คลำดับการหาให้ดีๆ
  25. - bottomup base case ดีจริงรึป่าว มีเกินขอบมั้ย
  26. - เช็คว่าเรียกฟังก์ชัน topdown/เอาค่าจากตาราง bottomup มาหาคำตอบครบยัง (หาแค่ตัวสุดท้ายอย่างเดียว? ต้องหา sum? หา min/max?)
  27. - **ไม่ควรหา min/max ระหว่างเรียกฟังก์ชัน/ทำตาราง dp เพราะจะงง หาตอนท้ายเอา**
  28. - ระวัง memo เกินขอบตาราง (เลขติดลบ? sum เยอะเกิน?)
  29.  
  30. Binary search common bugs
  31. - เช็ค bound เริ่มต้น/จบ ให้ดีๆ ต้องเป็นช่วงคำตอบที่เป็นไปได้
  32. - กรณีที่ไม่มีคำตอบล่ะ? ต้องเช็คก่อนรึป่าว แล้วตอบ -1?
  33. - ตัวฟังก์ชัน check รันแต่ละรอบต้องเป็นปัญหาแยกจากกันเลย อย่าลืมรีเซตตัวแปร
  34. - เช็คว่าคำตอบที่ได้จากการ check แต่ละรอบเรียงมั้ย** (1,1,1,1,0,0,0,0,0... โอเค แต่ว่า 1,1,0,1,0,0,0 เงี้ย จะ bsearch หาไม่ได้ เพราะว่าไม่ได้เรียง อาจจะต้อง linear ไป)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement