最少移動 暴力

2021-10-25 08:43:59 字數 1117 閱讀 7709

>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...