From 86520737ee66e3bc21bbf38d0983a1fa6c4986a9 Mon Sep 17 00:00:00 2001 From: Phluenam Date: Mon, 30 Oct 2023 23:30:35 +0800 Subject: [PATCH] Add 1130 (#153) --- md/1130.md | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 md/1130.md diff --git a/md/1130.md b/md/1130.md new file mode 100644 index 0000000..fd6a432 --- /dev/null +++ b/md/1130.md @@ -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 แล้วนับว่าแต่ละสมาชิกมีกี่สมาชิกที่มากกว่าหรือน้อยกว่าแทนการพิจารณาทุกคู่โดยตรง แต่นั่นไม่จำเป็นสำหรับข้อนี้) \ No newline at end of file