模板一:
#include<iostream>
using namespace std;
int a[1000001],b[1000001],rr,tem,t,s;__int64 ans;
void merg(int ll,int l,int r)
{
rr=l-1,tem=ll,t=l,s=ll;
while(ll<=rr&&t<=r)
if(a[ll]<=a[t])
b[tem++]=a[ll++];
else
{
ans+=l-ll;
b[tem++]=a[t++];
}
while(ll<=rr)
b[tem++]=a[ll++];
while(t<=r)
b[tem++]=a[t++];
for(;s<=r;s++)
a[s]=b[s];
}
void mergsort(int l,int r)
{
if(l<r)
{
int mid=(l+r)/2;
mergsort(l,mid);mergsort(mid+1,r);
merg(l,mid+1,r);
}
}
void main()
{
int n,i;
while(scanf("%d",&n)!=EOF)
{
for(i=1;i<=n;i++) scanf("%d",&a[i]);
ans=0;mergsort(1,n);
printf("%I64d\n",ans);
}
}
模板二:
#include<iostream>
using namespace std;
int a[1000001],b[1000001],rr,tem,t,s;__int64 ans;
void merg(int ll,int l,int r)
{
rr=l-1,tem=ll,t=l,s=ll;
while(ll<=rr&&t<=r)
if(a[ll]<=a[t])
b[tem++]=a[ll++];
else
{
ans+=l-ll;
b[tem++]=a[t++];
}
while(ll<=rr)
b[tem++]=a[ll++];
while(t<=r)
b[tem++]=a[t++];
for(;s<=r;s++)
a[s]=b[s];
}
void mergsort(int l,int r)
{
if(l<r)
{
int mid=(l+r)/2;
mergsort(l,mid);mergsort(mid+1,r);
merg(l,mid+1,r);
}
}
void main()
{
int n,i;
while(scanf("%d",&n)!=EOF)
{
for(i=1;i<=n;i++) scanf("%d",&a[i]);
ans=0;mergsort(1,n);
printf("%I64d\n",ans);
}
}
分享到:
相关推荐
主要讲述以http://blog.csdn.net/LCL_data/archive/2009/12/09/4974499.aspx中的链表逆序为模板来讲述指针的使用
Excel模板29-逆序柱形图.zip
> #include using namespace std; const int MAX=50005; int a[MAX],tree[MAX],n; int lowbit(int x) //找最低位的1 { return x&-x; } void add(int i,int x)//修改数据在i加x { while(i0) ...树
Excel柱形图条形图模板-逆序柱形图
9,树状数组模板 (求区间异或和,求逆序对) 扩展 10.区间不重复数字的和 (树状数组) 11.求k维空间中离所给点最近的m个点,并按顺序输出(KD树) 12.LCA (两个节点的公共父节点) 动态规划: 1.LIS (最长上升子序列) 2.有...
c++模板实现双向链表操作如逆序建立双向链表,插入结点等。
1.13 矢量运算求几何模板 35 1.14结构体表示几何图形 47 1.15四城部分几何模板 52 1.16 一些代码 54 1.16.1 最小圆覆盖_zju1450 54 1.16.2 直线旋转_两凸包的最短距离(poj3608) 58 1.16.3 扇形的重心 62 1.16.4 根据...
7. 逆序数(归并排序) 8. 树状DP 9. 欧拉路 10. 八数码 11. 高斯消元法 12. 字符串匹配(KMP算法) 13. 全排列,全组合 14. 二维线段树 15. 稳定婚姻匹配 16. 后缀数组 17. 左偏树 18. 标准RMQ-ST 19. 度限制最小生成树 ...
ACM模板 目录 插入排序 3 归并排序 3 逆序对 4 二分 6 最大子数组 6 1000亿以内的素数筛选 8 DFS与BFS 11 DFS 12 BFS 1
1 图论 3 1.1 术语 3 1.2 独立集、覆盖集、支配集之间关系 3 ...6.3.1 归并排序求逆序 72 7 数值分析 72 7.1 二分法 72 7.2 迭代法(x=f(x)) 73 7.3 牛顿迭代 74 7.4 数值积分 74 7.5 高斯消元 75 8 其它 77
nenu acm 模板,虽然不是全部原创,但融合了很多现有模板,并加入了部分自己的东西,全面了模板的注释。
1 图论 3 1.1 术语 3 1.2 独立集、覆盖集、支配集之间关系 3 ...6.3.1 归并排序求逆序 72 7 数值分析 72 7.1 二分法 72 7.2 迭代法(x=f(x)) 73 7.3 牛顿迭代 74 7.4 数值积分 74 7.5 高斯消元 75 8 其它 77
几何\ ... 逆序对数 字符串最小表示 最长公共单调子序列 最长子序列 最大子串匹配 最大子段和 最大子阵和 组合\ 排列组合生成 生成gray码 置换(polya) 字典序全排列 字典序组合 组合公式
面向对象的单链表,数据结构中使用,使用C语言!谢谢,祝使用愉快
13.7 逆序对数 123 13.8 字符串最小表示 123 13.9 最长公共单调子序列 124 13.10 最长子序列 125 13.11 最大子串匹配 126 13.12 最大子段和 127 13.13 最大子阵和 127 14、 其它 128 14.1 大数(只能处理正数) 128 ...
单链表的创建,排序,归并,插入删除定位和获得元素,计算元素个数,打印链表
7. 逆序数(归并排序) 8. 树状DP 9. 欧拉路 10. 八数码 11. 高斯消元法 12. 字符串匹配(KMP算法) 13. 全排列,全组合 14. 二维线段树 15. 稳定婚姻匹配 16. 后缀数组 17. 左偏树 18. 标准RMQ-ST 19. 度限制最小...
归并排序求逆序数 Pell方程 Catalan数,100以内 欧拉函数讲解 组合计数 组合数计算(double) 组合数计算(高精度) r-组合生成算法 r-排列生成算法 r-错位排列生成算法 图论 传递闭包 欧拉回路判定 有向图...