HDU 圓桌會議問題

2021-06-28 13:43:09 字數 1338 閱讀 8619

問題及**:

/* 

*檔名稱:team.cpp

*作 者:單昕昕

*完成日期:2023年2月3日

*版 本 號:v1.0

* *問題描述:acm集訓隊的隊員在暑假集訓時經常要討論自己在做題中遇到的問題.每當面臨自己解決不了的問題時,他們就會圍坐在一張圓形的桌子旁進行交流,經過大家的討論後一般沒有解決不了的問題,這也只有hdu acm集訓隊特有的圓桌會議,有一天你也可以進來體會一下哦:),在一天在討論的時候,eddy想出了乙個極為古怪的想法,如果他們在每一分鐘內,一對相鄰的兩個acm隊員交換一下位子,那麼要多少時間才能得到與原始狀態相反的座位順序呢?(即對於每個隊員,原先在他左面的隊員後來在他右面,原先在他右面的隊員在他左面),這當然難不倒其他的聰明的其他隊友們,馬上就把這個古怪的問題給解決了,你知道是怎麼解決的嗎?

*程式輸入:對於給定數目n(1<=n<=32767),表示有n個人,求要多少時間才能得到與原始狀態相反的座位順序(reverse)即對於每個人,原先在他左面的人後來在他右面,原先在他右面的人在他左面。

*程式輸出:對每個資料輸出一行,表示需要的時間(以分鐘為單位)

知識點總結:

這題就是在求一串數在每次只能對調相鄰兩位時,要得到其逆序最少要移動多少次。

在直線上移動很簡單,類似於氣泡排序的方法,乙個數不斷向上冒,直到最終位置。不難得到其需要移動的次數公式為n*(n-1)/2。其中n為總點數。

那麼在圓環上移動又會如何呢?應該會不一樣這是我們直觀的感受。事實也是如此,移動的過程是將圓環分為兩段,分別移動。那麼又在何處分段呢?

答案是盡量使兩段長度相等。

為啥?證明如下:

設n為總長度,分為兩段,長度分別為a、b。總次數=a*(a-1)/2+b*(b-1)/2=a*(a-1)/2+(n-a)*(n-a-1)/2=(2*a^2-2*n*a+n^2)/2。

其中n為常量,a為變數。二次曲線開口向上,最小值對應的a=-(-2*n)/(2*2)=n/2。顯然a要求整數。

學習心得:

這一題很顯然不是我自己寫出來的。。。感謝度娘和這位大神。。

找出來規律就好寫很多啊啊啊有木有~!!

圓桌會議 HDU 1214

hdu acm集訓隊的隊員在暑假集訓時經常要討論自己在做題中遇到的問題.每當面臨自己解決不了的問題時,他們就會圍坐在一張圓形的桌子旁進行交流,經過大家的討論後一般沒有解決不了的問題,這也只有hdu acm集訓隊特有的圓桌會議,有一天你也可以進來體會一下哦 在一天在討論的時候,eddy想出了乙個極為古...

F 圓桌會議

acm集訓隊的隊員在暑假集訓時經常要討論自己在做題中遇到的問題.每當面臨自己解決不了的問題時,他們就會圍坐在一張圓形的桌子旁進行交流,經過大家的討論後一般沒有解決不了的問題,這也只有hdu acm集訓隊特有的圓桌會議,有一天你也可以進來體會一下哦 在一天在討論的時候,eddy想出了乙個極為古怪的想法...

F 圓桌會議

hdu acm集訓隊的隊員在暑假集訓時經常要討論自己在做題中遇到的問題.每當面臨自己解決不了的問題時,他們就會圍坐在一張圓形的桌子旁進行交流,經過大家的討論後一般沒有解決不了的問題,這也只有hdu acm集訓隊特有的圓桌會議,有一天你也可以進來體會一下哦 在一天在討論的時候,eddy想出了乙個極為古...