強迫症的序列 牛客網 思維

2022-03-16 21:48:50 字數 962 閱讀 6072

輸入:

第一行乙個整數t(t<=100),表示組數

對於每組資料有乙個n,表示序列的長度(0< n <100000)

下面一行有n個數,表示每個序列的值(0<\(ai\)

<1000)

輸出:兩個數

第乙個數表示最小的操作步數

第二個數經過若干步以後的陣列元素是什麼

例如:1

31 2 3

輸出:3 4

這裡有乙個很奇怪的點,就是每次操作都需要選擇\(n-1\)個數,然後對每個數都加1。這樣我們可以反過來想:相當於選擇乙個數進行減一,然後使得所有的數都相同,這裡很容易想到,既然是只能選擇乙個數進行減一操作,那我就只能把所有的數都減到這\(n\)個數中的最小值嘍,因此我們就計算出了總的操作次數,即每個數和最小數的差的和。公式如下:\(a\)代表操作的次數。

\[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並不能很好的算出最...