NYOJ 233 NYOJ 322 Sort(树状数组)

链接: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.231 2 344 3 2 1样例输出06思路:就是求一组数据的逆序数,树状数组求法,,不解释:

代码:

#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(树状数组)

相关文章:

你感兴趣的文章:

标签云: