题目:http://poj.org/problem?id=2299

只能相邻两个交换,所以交换一次只会减少一个逆序对。所以交换次数就是逆序对数。

ps:原来树状数组还可以记录后边lowbit位的部分和。见代码。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define maxn 500005
using namespace std;
int n,f[maxn];
long long tmp[maxn],a[maxn],sum;
void add(int k)
{
while(k)
{
f[k]++;
k-=k&-k;
}
}
int query(int k)
{
int ret=;
while(k<=n)
{
ret+=f[k];
k+=k&-k;
}
return ret;
}
int main()
{
while()
{
sum=;
memset(f,,sizeof f);
scanf("%d",&n);
if(!n)return ;
for(int i=;i<=n;i++)
scanf("%lld",&a[i]),tmp[i]=a[i];
sort(tmp+,tmp+n+);
unique(tmp+,tmp+n+);
for(int i=;i<=n;i++)
a[i]=lower_bound(tmp+,tmp+n+,a[i])-tmp;
for(int i=;i<=n;i++)
{
sum+=query(a[i]);
add(a[i]);
}
printf("%lld\n",sum);
}
}

POJ2299逆序对模板(树状数组)的更多相关文章

  1. AcWing 107. 超快速排序(归并排序 + 逆序对 or 树状数组)

    在这个问题中,您必须分析特定的排序算法----超快速排序. 该算法通过交换两个相邻的序列元素来处理n个不同整数的序列,直到序列按升序排序. 对于输入序列9 1 0 5 4,超快速排序生成输出0 1 4 ...

  2. P1908 逆序对-(树状数组)

    https://www.luogu.org/problem/P1908 比较喜欢线段树,懒得用树状数组(只会套模板,位运算的精髓没有领悟到),一直没有记录树状数组代码,又得捡回来,趁这道题记录一下模板 ...

  3. 洛谷P1908 逆序对 (树状数组+离散化)

    模板题,树状数组加上离散化求逆序对. 1 #include<bits/stdc++.h> 2 using namespace std; 3 typedef long long LL; 4 ...

  4. 【BZOJ 3295】动态逆序对 - 分块+树状数组

    题目描述 给定一个1~n的序列,然后m次删除元素,每次删除之前询问逆序对的个数. 分析:分块+树状数组 (PS:本题的CDQ分治解法见下一篇) 首先将序列分成T块,每一块开一个树状数组,并且先把最初的 ...

  5. Bzoj 3295: [Cqoi2011]动态逆序对 分块,树状数组,逆序对

    3295: [Cqoi2011]动态逆序对 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 2886  Solved: 924[Submit][Stat ...

  6. Day2:T4求逆序对(树状数组+归并排序)

    T4: 求逆序对 A[I]为前缀和 推导 (A[J]-A[I])/(J-I)>=M A[j]-A[I]>=M(J-I) A[J]-M*J>=A[I]-M*I 设B[]=A[]-M*( ...

  7. bzoj1831 逆序对 (dp+树状数组)

    注意到,所有的-1应该是一个不降的序列,否则不会更优那就先求出来不是-1的的逆序对个数,然后设f[i][j]表示第i个-1放成j的前i个-1带来的最小逆序对数量这个可以树状数组来求 #include& ...

  8. P3157 [CQOI2011]动态逆序对(树状数组套线段树)

    P3157 [CQOI2011]动态逆序对 树状数组套线段树 静态逆序对咋做?树状数组(别管归并QWQ) 然鹅动态的咋做? 我们考虑每次删除一个元素. 减去的就是与这个元素有关的逆序对数,介个可以预处 ...

  9. hdu 4911 求逆序对数+树状数组

    http://acm.hdu.edu.cn/showproblem.php?pid=4911 给定一个序列,有k次机会交换相邻两个位置的数,问说最后序列的逆序对数最少为多少. 实际上每交换一次能且只能 ...

随机推荐

  1. HttpServletRequest解决中文乱码的问题

    HTTP请求有get和post,这两中方式解决中文乱码的方式如下: 1.Post方式请求 //这句话是设置post请求体的编码为utf-8 request.setCharacterEncoding(& ...

  2. win7 安装express

    1.以管理员身份打开cmd(避免出错) npm install -g express-generator@4 Start the server: npm start 链接,github官网说明 htt ...

  3. win10解除密码

  4. MySQL|RESTRICT|NO ACTION|CASCADE| SET NULL四种外键约束

    外键约束比较多得两种情况: 1.父表更新时子表也更新,父表删除时如果子表有匹配的项,删除失败: ON UPDATE CASCADE ON DELETE RESTRICT 1 2.父表更新时子表也更新, ...

  5. 合法的MAC地址

    以太网的地址为48位,由ieee统一分配给网卡制造商,每个网卡的地址都必须是全球唯一的.共6个字节的长度 字节 5 4 3 2 1 0  位 47..40 39..32 31..24 23..16 1 ...

  6. jsonp 跨域2

    <!doctype html> <html> <head> <meta charset="utf-8"> <meta name ...

  7. bzoj1008

    题解: 要求有几种方案可以越狱,可以用总方案-不会越狱的方案 那么总方案就是m^n 那么考虑不会越狱的方案 显然第一个人有m中,后面都是m-1中(和前一个不一样) 答案就是m^n-m*(m-1)^(n ...

  8. hdu 2874 Connections between cities(st&rmq LCA)

    Connections between cities Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (J ...

  9. bootstrap的学习总结

    1.bootstrap是一个css框架,它提供了很多类,这些类中实现了内外边距,颜色,大小等样式的封装,它还提供了很多常用插件可以直接使用 2.12栅格本质上是将标签的外边距和内边距通过“格子”的思想 ...

  10. 软工作业No.6 甜美女孩第四周

    各成员在Alpha阶段认领的任务 成员 Alpha阶段认领的任务 整个项目预期的任务量 曾祎祺 安排每日任务,每晚总结 16% 邓画月 基础2048+自定义 16% 梁佩诗 负责界面 16% 何颖琪 ...