Skip to content

Commit

Permalink
Add 1130 (#153)
Browse files Browse the repository at this point in the history
  • Loading branch information
Phluenam authored Oct 30, 2023
1 parent b1ff7e3 commit 8652073
Showing 1 changed file with 19 additions and 0 deletions.
19 changes: 19 additions & 0 deletions md/1130.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
ข้อนี้นิยามความจุของเซต $S$ เป็น
- ค่าของสมาชิกตัวที่มากกว่าลบด้วยสมาชิกตัวที่น้อยกว่าสำหรับ $|S|=2$
- ผลรวมของความจุของสับเซตของ $S$ ทุกสับเซตที่มีสมาชิก $N − 1$ ตัว สำหรับ $|S|>2$

และให้หาความจุของเซ็ต $S$ ที่มีขนาด $|S|=N \leq 10000$

ข้อสังเกตหลักของข้อนี้คือเราสามารถคำนวณผลรวมของความจุของทุกสับเซ็ตที่มีขนาด $k$ ($k\geq 3$) ได้หากเราทราบผลรวมความจุของทุกสับเซตที่มีขนาด $k-1$

ให้ผลรวมความจุของสับเซ็ตขนาด $k$ ทุกอันเป็น $M_k$

สังเกตว่าทุกเซ็ตขนาด $k-1$ จะเป็นสับเซ็ตของสับเซ็ตขนาด $k$ จำนวน $N-(k-1)$ อันพอดี (เพราะเลือกอีก 1 สมาชิกของ $S$ ที่เหลืออยู่มาเพิ่ม จะมี $N-(k-1)$ ตัวเลือก) ดังนั้น $M_k = M_{k-1} (N-(k-1))$

สำหรับ $k=2$ เราสามารถคำนวณ $M_2$ ได้โดยตรงโดยการคำนวณค่ามากกว่าลบค่าน้อยกว่าสำหรับทุกคู่ของสมาชิกของ $S$ ในเวลา $\mathcal{O}(N^2)$

จากนั้นคำนวณ $M_3, M_4, \dots, M_N$ ได้ตามสูตร $M_k = M_{k-1} (N-(k-1))$ ซึ่งใช้เวลา $\mathcal{O}(N)$

ทั้งหมดจึงใช้เวลา $\mathcal{O}(N^2)$ ซึ่งเร็วเพียงพอสำหรับข้อนี้

(เพิ่มเติม: ขั้นตอนการหา $M_2$ สามารถลดเวลาเป็น $\mathcal{O}(N \log N)$ โดยการ sort แล้วนับว่าแต่ละสมาชิกมีกี่สมาชิกที่มากกว่าหรือน้อยกว่าแทนการพิจารณาทุกคู่โดยตรง แต่นั่นไม่จำเป็นสำหรับข้อนี้)

0 comments on commit 8652073

Please sign in to comment.