这个是逆序对的裸题哇

归并排序或者树状数组~

树状数组的话需要离散化一下···

emm确实很水很水很水···

归并排序:

 #include <cstdio>
#include <algorithm>
#include <cstring>
#include <iostream> using namespace std;
const int maxn=+;
int a[maxn];
int n;
int t[maxn];
long long ans;
void merge(int L,int R,int *A,int *T){
int mid=L+(R-L)/;
if(R-L==)return ;
merge(L,mid,A,T);
merge(mid,R,A,T);
int i=L,j=mid;
int pos=L;
while(i<mid||j<R){
if((A[i]<=A[j]&&i<mid)||j>=R){
T[pos++]=A[i++];
}
else{
T[pos++]=A[j++];
ans+=mid-i;
}
}
for(i=L;i<R;i++)A[i]=T[i];
}
int main(){
ans=;
scanf("%d",&n);
for(int i=;i<=n;i++)scanf("%d",&a[i]);
merge(,n+,a,t);
cout<<ans;
//for(int i=1;i<=n;i++)
// cout<<a[i]<<" "; return ;
}

树状数组:

 #include <cstdio>
#include <algorithm>
#include <iostream>
#include <cstring> using namespace std;
const int maxn=+;
int a[maxn];
int m[maxn];
int n;
int C[maxn];
int lowbit(int x){
return x&(-x);
}
void add(int v,int x){//a[v]+=x
while(v<=n){
C[v]+=x;
v+=lowbit(v);
}
}
int query(int v){//sum[v]
int res=;
while(v>=){
res+=C[v];
v-=lowbit(v);
}
return res;
}
int Max=-;
int main(){
scanf("%d",&n);
for(int i=;i<=n;i++){scanf("%d",&a[i]);}
for(int i=;i<=n;i++)m[i]=a[i];
sort(m+,m++n); long long ans=;
for(int i=;i<=n;i++){
int num=lower_bound(m+,m++n,a[i])-m;
add(num,);
ans+=query(n)-query(num);
}
cout<<ans;
return ;
}

Inversions SGU - 180的更多相关文章

  1. 逆序对__归并排序__树状数组 Inversions SGU - 180

    There are N integers (1<=N<=65537) A1, A2,.. AN (0<=Ai<=10^9). You need to find amount o ...

  2. SGU 180 Inversions(离散化 + 线段树求逆序对)

    题目链接:http://acm.sgu.ru/problem.php?contest=0&problem=180 解题报告:一个裸的求逆序对的题,离散化+线段树,也可以用离散化+树状数组.因为 ...

  3. SGU 180 Inversions

    题意:求逆序数对数量. 思路一:暴力,O(N^2),超时. 思路二:虽然Ai很大,但是n比较小,可以离散化,得到每个Ai排序后的位置Wi,然后按照输入的顺序,每个Ai对答案的贡献是Wi-Sum(Wi- ...

  4. SGU 180 Inversions【树状数组】

    题意:求逆序数 和POJ那题求逆序数的一样,不过这题离散化之后,要去一下重,然后要开到long long #include<iostream> #include<cstdio> ...

  5. SGU 180

    求逆序数对    归并排序 #include <cstdio> #include <cstring> #include <cmath> #include <a ...

  6. 今日SGU 5.5

    SGU 114 题意:求一个点到其他点的距离总和最小,距离的定义是x轴距离乘以那个点的人数p 收获:带权中位数,按坐标排序,然后扫一遍,最后权值超过或等于总权值的一半时的那个点就是答案,证明暂无 #i ...

  7. 20160723数据结构节alexandrali

    大坑最后再填. 20160803:心情好回来填啦(5/7) 做的题目是: poj2970 我们先每个人都不给钱qwq 然后我们发现有一位的工作时间超过了d 那么我们就从以前安排过工作的人里,a最大的, ...

  8. SGU 分类

    http://acm.sgu.ru/problemset.php?contest=0&volume=1 101 Domino 欧拉路 102 Coprime 枚举/数学方法 103 Traff ...

  9. SGU Volume 1

    SGU 解题报告(持续更新中...Ctrl+A可看题目类型): SGU101.Domino(多米诺骨牌)------------★★★type:图 SGU102.Coprimes(互质的数) SGU1 ...

随机推荐

  1. container-diff 谷歌开源镜像分析工具使用

    1. 安装 curl -LO https://storage.googleapis.com/container-diff/latest/container-diff-linux-amd64 & ...

  2. 国外牛人的五个Kubernetes学习建议

    现在云中存在的许多系统都是建立在基于虚拟机,虚拟磁盘等物理概念的抽象基础之上的,”Heptio的联合创始人兼首席技术官兼Kubernetes在Google的原始开发人员之一的Joe Beda说. “K ...

  3. IMP-00013: 只有 DBA 才能导入由其他 DBA 导出的文件

    IMP-00013: only a DBA can import a file exported by another DBA 处理方法:在给目标环境的用户赋予dba权限,或者细粒度一些,赋予imp_ ...

  4. Avro和Thrift区别(未完待续)

    两者都是优秀的序列化框架: Avro创造之初是Hadoop之父Doug为了创造一种更加快捷的序列化方案(此时已经有了thrift),用于Hadoop的HDFS的文件序列化问题. Thrift一个成熟的 ...

  5. Java堆栈解析

    1.RAM和ROM区别RAM-RamdomAccessMemory随机存取存储器(断电后数据会丢失),高速存取,读写时间相等,且与地址无关,如计算机内存等. ROM-Read Only Memory只 ...

  6. POJ 2566 Bound Found(尺取法,前缀和)

    Bound Found Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 5207   Accepted: 1667   Spe ...

  7. .NET单点登录实现方法----两种

    第一种模式:同一顶级域名下cookie共享,代码如下 HttpCookie cookies = new HttpCookie("Token"); cookies.Expires = ...

  8. 项目中Map端内存占用的分析

      最近在项目中开展重构活动,对Map端内存尽量要省一些,当前的系统中Map端内存最高占用大概3G左右(设置成2G时会导致Java Heap OOM).虽然个人觉得占用不算多,但是显然这样的结果想要试 ...

  9. 第四章 Kubernetes 架构

    4.1 Master节点:Master是大脑,运行如下Daemon服务: API Server(kube-apiserver)      API server提供了HTTP/HTTPS RESTful ...

  10. Asp.net 的cookie问题

    写代码的发现的小问题 如果写入cookie的时候指定了domin域名 那么删除的时候必须也指定domin域名才行,即使你先读取了这个已经存在的cookie,但是还是要指定domin才能删除 /// & ...