【逆序】HDU-1214 圆桌会议

在这里插入图片描述
在这里插入图片描述

注解

1、本题相当于求逆序,一个容量为n的队列,逆序需要交换的次数为 n * (n-1) / 2。
2、本题是个圆形队列(循环队列),相当于没有首尾,因此将队列分成两半,分的时候容量尽量接近,每部分分别逆序再整合即可。

代码

#include <iostream>

using namespace std;

int fun(int n){
    return n*(n-1)/2;
}

int main() {

    int n;
    while(~scanf("%d", &n)){
        int a = n/2;
        int b = n-a;
        printf("%d\n", fun(a)+fun(b));
    }

    return 0;
}

结果

在这里插入图片描述

发布了475 篇原创文章 · 获赞 19 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/zhanggirlzhangboy/article/details/103687627