>link
>description
給出乙個長度為n
nn的序列 a1,
a2…a
na_1,a_2…a_n
a1,a2
…an
,每次可以選擇相鄰的兩個數,令乙個數+1+1
+1,乙個數−1-1
−1求最終使得這n個數相同的最少操作次數,若不能達到目的輸出-1
>解題思路
最終肯定是使每個數都變為這n個數的平均數,若是平均數不為整數就不能達到目的
我們先對序列根據平均數相減一下,就變成了每個數與目標值相差了多少
我的思想:我們可以使用∣x∣
|x|∣x
∣步,使得相鄰的兩個數 x y → 0 y+x,其中x和y為任意數
直接暴力,從1
11~n
nn把所有的數都往右移,像列車一樣從1開始遇到乙個非0數就帶上直到到達n,用k
kk記錄列車上的總數
這樣暴力是可以的,假設移動乙個大數,和移動多個小數的代價是一樣的
>**
#include
#include
#include
#include
#include
#define n
100005
#define int long long
using namespace std;
int t
, n, a[n]
, t, ans, k;
void
work()
if(t % n !=0)
t /= n;
for(int i =
1; i <= n; i++
) a[i]
-= t;
k = a[1]
;for
(int i =
2; i <= n; i++
)printf
("%lld\n"
, ans);}
signed main()
排序 最少移動元素個數
牛牛有乙個長度為n的整數序列,牛牛想對這個序列進行重排為乙個非嚴格公升序序列。牛牛比較懶惰,他想移動盡量少的數就完成重排,請你幫他計算一下他最少需要移動多少個序列中的元素。當乙個元素不在它原來所在的位置,這個元素就是被移動了的 輸入包括兩行,第一行乙個整數n 1 n 50 即序列的長度 第二行n個整...
CSU 1926 使用最少的硬幣 暴力
題目要求使用硬幣最少 我的第一想法是不必使所選硬幣一定滿足s 然而看樣例是要滿足恰好滿足這個s這個條件的 然後可能會相到從50元的開始選,盡量多的選50元的硬幣,但是又有個問題,可能有乙個 60 只能由 3個20元的硬幣組成,而我們剛剛的想法顯然不滿足 所以只能暴力列舉,但是資料量比較大,中間需要很...
漢諾塔 最少移動次數 路徑 遞迴
漢諾塔 三個柱子 a,b,c,a有n個環,講n個環全部移動到c上,要求 1 移動次數最少 2 大環不能放在小環上。輸入 n n 10 輸出 移動次數 路徑例 輸入 3 輸出 7 1 from a to c 2 from a to b 1 from c to b 3 from a to c 1 fro...