【LibreOJ6003】【網路流24題】魔術球問題 的通項公式與線性解法
假設有 n 根柱子,現要按下述規則在這n 根柱子中依次放入編號為1,2,3,4,⋯的球。
- 每次只能在某根柱子的最上面放球。
- 在同一根柱子中,任何 2 個相鄰球的編號之和為完全平方數。
試設計一個演算法,計算出在 n 根柱子上最多能放多少個球。
這道題有貪心做法,由於答案的數量是O(n^2)所以,複雜度為O(n^3),至於貪心做法的正確性,可以通過證明方案的唯一性來證明,這裡不再研究貪心演算法。這道題其實是有O(1)出答案,O(答案數量)出方案的做法的。
附上前10個點經過整理後的方案
[1]
1
[2]
3 1
2
[3]
5 4
6 3 1
7 2
[4]
11 5 4
10 6 3 1
9 7 2
8
[5]
13 12
14 11 5 4
15 10 6 3 1
16 9 7 2
17 8
[6]
23 13 12
22 14 11 5 4
21 15 10 6 3 1
20 16 9 7 2
19 17 8
18
[7]
25 24
26 23 13 12
27 22 14 11 5 4
28 21 15 10 6 3 1
29 20 16 9 7 2
30 19 17 8
31 18
[8]
39 25 24
38 26 23 13 12
37 27 22 14 11 5 4
36 28 21 15 10 6 3 1
35 29 20 16 9 7 2
34 30 19 17 8
33 31 18
32
[9]
41 40
42 39 25 24
43 38 26 23 13 12
44 37 27 22 14 11 5 4
45 36 28 21 15 10 6 3 1
46 35 29 20 16 9 7 2
47 34 30 19 17 8
48 33 31 18
49 32
[10]
59 41 40
58 42 39 25 24
57 43 38 26 23 13 12
56 44 37 27 22 14 11 5 4
55 45 36 28 21 15 10 6 3 1
54 46 35 29 20 16 9 7 2
53 47 34 30 19 17 8
52 48 33 31 18
51 49 32
50