POJ 1455 Crazy tea party

来源:互联网 发布:利为汇seo视频教程 编辑:程序博客网 时间:2024/05/24 06:18
这题一开始没看明白题意,不知道测试数据怎么算出来的,又去找题解。要在最短的时间内实现两两逆序,设从一个人开始的序列是1 2 3 4 5,那么因为这是一个环就等价与把4 5 1 2 3两两逆序。一开始还没明白这样做有什么好处,后来才明白一开始的逆序数要尽可能的大才能使操作时间最短,因为已经逆序的数就不需要再进行交换了,观察发现1在中间时逆序数是最大的,这样就把这个串切成了两段,然后进行冒泡排序的时间和即为答案。
#include <iostream>#include <cstdio>using namespace std;int main(){    int t;    scanf("%d",&t);    while(t--)    {        int n;        cin>>n;        if(n&1)        {            int temp=n/2;            cout<<temp*temp<<endl;        }        else        {            int temp=n/2;            cout<<temp*(temp-1)<<endl;        }    }}

原创粉丝点击