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集訓隊特有的圓桌會議,有一天你也可以進來體會一下哦 在一天在討論的時候,...