輸入:這裡有乙個很奇怪的點,就是每次操作都需要選擇\(n-1\)個數,然後對每個數都加1。這樣我們可以反過來想:相當於選擇乙個數進行減一,然後使得所有的數都相同,這裡很容易想到,既然是只能選擇乙個數進行減一操作,那我就只能把所有的數都減到這\(n\)個數中的最小值嘍,因此我們就計算出了總的操作次數,即每個數和最小數的差的和。公式如下:\(a\)代表操作的次數。第一行乙個整數t(t<=100),表示組數
對於每組資料有乙個n,表示序列的長度(0< n <100000)
下面一行有n個數,表示每個序列的值(0<\(ai\)
<1000)
輸出:兩個數
第乙個數表示最小的操作步數
第二個數經過若干步以後的陣列元素是什麼
例如:1
31 2 3
輸出:3 4
\[a=\sum_^(a[i]-min) \quad \text
\]這裡操作次數計算出來了,但是最後我們把這些數實際變成了什麼呢?也就是需要輸出的第二個數。這裡我們可以簡單發現下面的公式,假設\(b\)就是需要輸出的第二個數。
\[\begin\underbrace_\text=\underbrace_\text \quad \text\end
\]這樣我們就可以根據上面的公式就可以計算第二個需要的數\(b\)。
\[\beginb& = \frac \\& = \frac \\& = a+\frac\end
\]
#include#include#includeusing namespace std;
const int maxn=1e5+7;
const int inf=0x3f3f3f3f;
int num[maxn];
int t, n, sum;
int main()
return 0;
}
思維題 牛客網 強迫症的序列
小a是乙個中度強迫症患者,每次做陣列有關的題目都異常難受,他十分希望陣列的每乙個元素都一樣大,這樣子看起來才是最棒的,所以他決定通過一些操作把這個變成乙個看起來不難受的陣列,但他又想不要和之前的那個陣列偏差那麼大,所以他每次操作只給這個陣列的其中n 1個元素加1,但是小a並不能很好的算出最優的解決方...
強迫症的序列
小a是乙個中度強迫症患者,每次做陣列有關的題目都異常難受,他十分希望陣列的每乙個元素都一樣大,這樣子看起來才是最棒的,所以他決定通過一些操作把這個變成乙個看起來不難受的陣列,但他又想不要和之前的那個陣列偏差那麼大,所以他每次操作只給這個陣列的其中n 1個元素加1,但是小a並不能很好的算出最優的解決方...
J 強迫症的序列
題目描述 小a是乙個中度強迫症患者,每次做陣列有關的題目都異常難受,他十分希望陣列的每乙個元素都一樣大,這樣子看起來才是最棒的,所以他決定通過一些操作把這個變成乙個看起來不難受的陣列,但他又想不要和之前的那個陣列偏差那麼大,所以他每次操作只給這個陣列的其中n 1個元素加1,但是小a並不能很好的算出最...