包括计算几何、特殊数据结构、组合数学等知识点的代码。每个代码对应一道ACM试题

源代码在线查看: 用归并排序求逆序数.txt

软件大小: 152 K
上传用户: tanghui2008
关键词: ACM 代码 计算 几何
下载地址: 免注册下载 普通下载 VIP

相关代码

				#include 
				#include 
				#include 
				#include 
				#include 
				using namespace std;
				
				//用归并排序求逆序数 NOJ 1022
				#define NMAX 500005
				long a[NMAX];
				long tt[NMAX];//暂存数组
				__int64 ans;
				
				void Merge(long *sr,long s,long m,long t)
				{
					long k,p,q;
					//使用暂存数组存储排序好的部分数
					for(k=s,p=m+1,q=s;k					{	
						if(sr[k]						else {tt[q++]=sr[p++];ans+=m-k+1;}//根据移动位置求逆序数
					}
					while(k					while(p					//覆盖原数组
					for(k=s;k				}
				
				void msort(long *sr,long s,long t)
				{
					long m;
					if(s					{
						m=(s+t)/2;
						msort(sr,s,m);
						msort(sr,m+1,t);
						Merge(sr,s,m,t);
					}
				}
				
				
				int main()
				{
					long num,i;
					scanf("%ld",&num);
					while(num!=0)
					{
						ans=0;
						memset(a,0,sizeof(a));
						for(i=1;i							scanf("%ld",&a[i]);
						msort(a,1,num);
						printf("%I64d\n",ans);
						scanf("%ld",&num);
					}
					return 0;
				}			

相关资源