这道是和zoj2376一同放过去的题。。。。。。。
类似冒泡程序
如果所有人是线性排列,那我们的工作就是类似冒泡程序做的工作:1,2,3,4,5变为5,4,3,2,1 ,耗时n(n-1)/2
但是出现了环,也就是说1,2,3,4,5变为3,2,1,5,4也可满足条件
我们可以把这个环等分成两个部分 ,每个部分看成是线性的,再把它们花的时间加起来.
当n是偶数时, 每份人数n/2 ,即 2*(n/2 )*(n/2 -1)/2;
当n是奇数时,两份的人数分别是n/2和n/2+1,即(n/2)*(n/2 -1)/2 + (n/2 +1)*(n/2)/2
。。。。。。。。。现在总算搞清楚是怎么回事了。。。。。
#include<stdio.h>
#include<string.h>
int main()
{
int t,n,time;
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
if(n%2==0)
time=2*(n/2)*(n/2-1)/2;
else
time=(n/2)*(n/2 -1)/2 + (n/2 +1)*(n/2)/2 ;
printf("%d\n",time);
}
return 0;
}