HDOJ 1214 圓桌會議(水題)

2021-07-24 13:48:10 字數 1245 閱讀 9297

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

input

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

output

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

sample input

456

sample output

246

n個人想要形成相反的順序,從中間分,左半部分互換,右半部分也互換即可

如n=10,序列為1.2.3.4.5.6.7.8.9.10

左半部分,從1,2開始交換,再1,3交換……1,5交換……再2,3交換……2,5交換,顯然需要4+3+2+1=10次

顯然是個等差數列

右半部分同理,需要10次

所以n個人的話

所需次數x=(i/2*(i/2-1)+(i-i/2)*(i-i/2-1))/2

#include#include#include#include#include#include#include#include#include#include#define pi acos(-1.0)

#define inf 0x3f3f3f3f

#define cl(a, b) memset(a, b, sizeof(a))

using namespace std;

typedef long long ll;

const int maxn = 5e4+10;

const int mod = 1e9+7;

int cnt[maxn];

int main()

while(scanf("%d", &t) == 1)

return 0;

}

1214 圓桌會議

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

hdu1214 圓桌會議 水題

中文題目。因為是圓形的,假如有5個人,初始是1,2,3,4,5 那麼,可以排成5,4,3,2,1,也可以排成3,2,1,5,4 迴圈的佇列是不用區分第乙個在 的。最簡單的方法是把佇列分成兩個佇列,這兩個佇列長度最接近。假設乙個佇列有n個人,那麼逆序需要交換n n 1 2次 如下 hdu1214 in...

HDU 1214圓桌會議

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