zoj 1730 Crazy Tea Party

本文深入探讨了冒泡排序算法在处理线性排列与环形排列时的优化策略,通过将环形排列等分为两部分并分别进行线性排序,实现了效率提升。针对不同排列数量(偶数与奇数),提供了具体的计算公式与实现代码,旨在提高排序任务的执行速度。
//水题不水啊!
/*类似冒泡程序
 如果所有人是线性排列,那我们的工作就是类似冒泡程序做的工作: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 "iostream"
using namespace std;

int main()
{
	int testcase, i, num, minutes;
	cin >> testcase;
	for (i = 0; i < testcase; i++)
	{
		cin >> num;
		minutes = 0;
		if (num % 2 == 0)
		{
			minutes = 2 * (num / 2) * (num / 2 - 1) / 2;
		}
		else
		{
			minutes = (num / 2) * (num / 2 - 1) / 2 + (num / 2 + 1) * (num / 2) / 2;
		}
		cout << minutes << endl;
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值