码迷,mamicode.com
首页 > 编程语言 > 详细

NYOJ 233 &&NYOJ 322 Sort(树状数组)

时间:2015-02-25 21:10:08      阅读:153      评论:0      收藏:0      [点我收藏+]

标签:nyoj 树状数组

链接:click here

题意:

描述
You want to processe a sequence of n distinct integers by swapping two adjacent sequence elements until the sequence is sorted in ascending order. Then how many times it need.
For example, 1 2 3 5 4, we only need one operation : swap 5 and 4.
输入
The input consists of T number of test cases.(<0T<1000) Each case consists of two lines: the first line contains a positive integer n (n <= 1000); the next line contains a permutation of the n integers from 1 to n.
输出
For each case, output the minimum times need to sort it in ascending order on a single line.
样例输入
2
3
1 2 3
4
4 3 2 1
样例输出
0
6
思路:就是求一组数据的逆序数,树状数组求法,不解释:

代码:

#include <math.h>
#include <queue>
#include <deque>
#include <vector>
#include <stack>
#include <stdio.h>
#include <ctype.h>
#include <string.h>
#include <stdlib.h>
#include <iostream>
#include <algorithm>

using namespace std;
#define lowbit(a) a&-a
#define Max(a,b) a>b?a:b
#define Min(a,b) a>b?b:a
#define mem(a,b) memset(a,b,sizeof(a))
int dir[4][2]= {{1,0},{-1,0},{0,1},{0,-1}};
const double eps = 1e-6;
const double Pi = acos(-1.0);
static const int inf= ~0U>>2;
static const int maxn =110;
int  h[1000001],w[100],Map[200];
int m[10001], N;
void Add(int i)
{
    while(i<=1001)
    {
        m[i]++;
        i+=lowbit(i);
    }
}
int Sum(int i)
{
    int res=0;
    while(i>0)
    {
        res+=m[i];
        i-=lowbit(i);
    }
    return res;
}
int main()
{
    int T,temp;
    scanf("%d",&T);
    while(T--)
    {
        scanf("%d",&N);
        memset(m,0,sizeof(m));
        int ans=0;
        for(int i=1; i<=N; i++)
        {
            scanf("%d",&temp);
            Add(temp);
            ans+=(i-Sum(temp));
        }
        printf("%d\n",ans);
    }
    return 0;
}
When you want to give up, think of why you persist until now


NYOJ 233 &&NYOJ 322 Sort(树状数组)

标签:nyoj 树状数组

原文地址:http://blog.csdn.net/u013050857/article/details/43939917

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!