ZOJ 1730 Crazy Tea Party

来源:互联网 发布:战舰世界 石锤数据 编辑:程序博客网 时间:2024/05/29 20:03

要想把一个升序数组用相邻两个元素交换的方法变成降序 交换的最小次数只能是n*(n - 1) / 2.

所以可以考虑把环分成两段每段都进行交换.

n是偶数的时候交换次数就是(n / 2 ) * (n / 2 - 1)

n是奇数的时候交换次数就是(n / 2) * (n / 2 - 1) + (n / 2 + 1) * (n / 2)

#include <iostream>#include <cstdio>using namespace std;int n;int main(){int T;scanf("%d", &T);while(T--){scanf("%d", &n);if(n & 1){printf("%d\n", ((n / 2) * (n / 2 - 1) + (n / 2 + 1) * (n / 2)) / 2);}else{printf("%d\n", (n / 2) * (n / 2 - 1));}}return 0;}



原创粉丝点击