1. 程式人生 > >luogu P3723 [AH2017/HNOI2017]禮物

luogu P3723 [AH2017/HNOI2017]禮物

背景:

最近一直在補坑。

題意:

有兩個序列 a , b a,b (圍成兩個圈),將 a a

序列所有的值加上一個非負整數 c c (自己給的),將 b b 序列逆時針旋轉一定的角度,求 i
= 1 n ( a i b
i
) 2 \sum\limits_{i=1}^{n}(a_i-b_i)^2
的最小值。

思路:

不妨假設旋轉完的 b b 序列為 b b' 。,則題目就是求 i = 1 n ( a i + c b i ) 2 \sum\limits_{i=1}^{n}(a_i+c-b'_i)^2 的最小值。
考慮化簡式子。
i = 1 n ( a i + c b i ) 2 \sum\limits_{i=1}^{n}(a_i+c-b'_i)^2
拆括號,得:
i = 1 n ( a i 2 + c 2 + b i 2 + 2 a i c 2 a i b i 2 c b i ) \sum\limits_{i=1}^{n}(a_i^2+c^2+{b'_i}^2+2*a_i*c-2*a_i*b'_i-2*c*b'_i)
發現 a i 2 + b i 2 a_i^2+{b'_i}^2 為定值,將其提出。
i = 1 n ( a i 2 + b i 2 ) + i = 1 n ( c 2 + 2 a i c 2 a i b i 2 c b i ) \sum\limits_{i=1}^{n}(a_i^2+{b'_i}^2)+\sum\limits_{i=1}^{n}(c^2+2*a_i*c-2*a_i*b'_i-2*c*b'_i)
再提取一個 2 c 2*c 得:
i = 1 n ( a i 2 + b i 2 ) + i = 1 n ( c 2 + 2 c ( a i b i ) ) i = 1 n ( 2 a i b i ) \sum\limits_{i=1}^{n}(a_i^2+{b'_i}^2)+\sum\limits_{i=1}^{n}(c^2+2*c*(a_i-b'_i))-\sum\limits_{i=1}^{n}(2*a_i*b'_i)
提取出一些數,得到:
i = 1 n ( a i 2 ) + i = 1 n ( b i 2 ) + n c 2 + 2 c ( i = 1 n a i i = 1 n b i ) i = 1 n ( 2 a i