【题目链接】

http://www.lydsy.com/JudgeOnline/problem.php?id=3289

【题意】

回答若干个询问:[l,r]区间内的逆序对个数。

【思路】

莫队算法,BIT维护插入删除。

使用BIT维护当前指针l,r内的所有的数。考虑转移部分:

l<q[i].l 删出区间中比a[l]小的数与之构成的逆序对,Q(a[l]-1)

l>q[i].l l++,添加区间中比a[l]小的数与之构成的逆序对,Q(a[l]-1)

r>q[i].r 删除区间中比a[r]大的数与之构成的逆序对,r-l+1-Q(a[r])

r<q[i].r r++,添加区间中比a[r]大的数与之构成的逆序对,r-l-Q(a[r])

相应修改BIT。

这一部分比较容易出错 =_=

【代码】

 #include<cmath>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define FOR(a,b,c) for(int a=b;a<=c;a++)
using namespace std; typedef long long ll;
const int N = 1e5+; ll read() {
char c=getchar();
ll f=,x=;
while(!isdigit(c)) {
if(c=='-') f=-; c=getchar();
}
while(isdigit(c))
x=x*+c-'',c=getchar();
return x*f;
} struct Node {
int pos,id,l,r;
bool operator < (const Node& rhs) const
{
return pos<rhs.pos||(pos==rhs.pos&&r<rhs.r);
}
} q[N]; int n,m;
int C[N],a[N],hash[N],tot;
ll ans[N]; void add(int x,int v)
{
for(;x<=tot;x+=x&-x) C[x]+=v;
}
ll query(int x)
{
ll sum=;
for(;x;x-=x&-x) sum+=(ll)C[x];
return sum;
} int main()
{
n=read();
FOR(i,,n) a[i]=read(),hash[++tot]=a[i];
sort(hash+,hash+n+);
tot=unique(hash+,hash+n+)-hash-;
FOR(i,,n) a[i]=lower_bound(hash+,hash+n+,a[i])-hash; m=read();
int B=sqrt(n);
FOR(i,,m)
{
q[i].l=read(),
q[i].r=read();
q[i].id=i;
q[i].pos=(q[i].l-)/B+;
}
sort(q+,q+m+); ll now=;
int l=,r=;
FOR(i,,m)
{
while(l<q[i].l)
now-=query(a[l]-),add(a[l],-),l++;
while(l>q[i].l)
l--,now+=query(a[l]-),add(a[l],);
while(r>q[i].r)
now-=r-l+-query(a[r]),add(a[r],-),r--;
while(r<q[i].r)
r++,now+=r-l-query(a[r]),add(a[r],);
ans[q[i].id]=now;
} FOR(i,,m)
printf("%lld\n",ans[i]);
return ;
}

bzoj 3289 Mato的文件管理(莫队算法+BIT)的更多相关文章

  1. BZOJ 3289: Mato的文件管理[莫队算法 树状数组]

    3289: Mato的文件管理 Time Limit: 40 Sec  Memory Limit: 128 MBSubmit: 2399  Solved: 988[Submit][Status][Di ...

  2. BZOJ 3289: Mato的文件管理 莫队+BIT

    3289: Mato的文件管理 Description Mato同学从各路神犇以各种方式(你们懂的)收集了许多资料,这些资料一共有n份,每份有一个大小和一个编号.为了防止他人偷拷,这些资料都是加密过的 ...

  3. Bzoj 3289: Mato的文件管理 莫队,树状数组,逆序对,离散化,分块

    3289: Mato的文件管理 Time Limit: 40 Sec  Memory Limit: 128 MBSubmit: 1539  Solved: 665[Submit][Status][Di ...

  4. bzoj 3289: Mato的文件管理 莫队+树状数组

    3289: Mato的文件管理 Time Limit: 40 Sec  Memory Limit: 128 MB[Submit][Status][Discuss] Description Mato同学 ...

  5. bzoj 3289 : Mato的文件管理 (莫队+树状数组)

    题目链接: https://www.lydsy.com/JudgeOnline/problem.php?id=3289 思路: 求区间最小交换的次数将区间变成一个不降序列其实就是求区间逆序对的数量,这 ...

  6. bzoj 3289: Mato的文件管理 莫队+线段树

    题目链接 给一些询问,每个询问给出区间[L, R] , 求这段区间的逆序数. 先分块排序, 然后对于每次更改, 如果是更改L, 那么应该查询区间内比他小的数的个数, 如果更改R, 查区间内比他大的数的 ...

  7. 【BZOJ3289】Mato的文件管理 莫队算法+树状数组

    [BZOJ3289]Mato的文件管理 Description Mato同学从各路神犇以各种方式(你们懂的)收集了许多资料,这些资料一共有n份,每份有一个大小和一个编号.为了防止他人偷拷,这些资料都是 ...

  8. BZOJ 3289 Mato的文件管理(莫队+离散化求逆序数)

    3289: Mato的文件管理 Time Limit: 40 Sec  Memory Limit: 128 MB Submit: 2171  Solved: 891 [Submit][Status][ ...

  9. BZOJ 3289: Mato的文件管理 【莫队 + 树状数组】

    任意门:https://www.lydsy.com/JudgeOnline/problem.php?id=3289 3289: Mato的文件管理 Time Limit: 40 Sec  Memory ...

随机推荐

  1. Android: 启动init.rc 中service的权限问题【转】

    转自:http://www.linuxidc.com/Linux/2011-04/35014.htm 通过property_set("ctl.start", service_xx) ...

  2. (4)FTP服务器下载文件

    上一篇中,我们提到了怎么从FTP服务器下载文件.现在来具体讲述一下. 首先是路径配置.. 所以此处我们需要一个app.config来设置路径. <?xml version="1.0&q ...

  3. HeadFirst Jsp 06 (会话管理)

    现在我们希望能够跨多个请求保留客户特定的状态. 现在, 模型中的业务只是检查请求中的参数, 并返回一个响应(建议), 应用中没有谁记得在当前请求之前与这个客户之间发生过什么. 与一个客户的整个会话期间 ...

  4. Incorrect key file for table '/tmp/#sql_882_0.MYI'; try to repair it

    修表方法如下: 一法:. check table 和 repair table 方法1,进入Mysql 的Dos控制台,输入密码进入 2,use database;(你的数据库名) 3, check  ...

  5. maven-source 1.3 中不支持注释请使用 -source 5 或更高版本以启用注释

    解决办法:在pom里 加上以下代码 <build> <plugins> <plugin> <groupId>org.apache.maven.plugi ...

  6. R语言将List转为矩阵do.call

    ehparse.matrix <- do.call(rbind, easyham.parse)

  7. HDU 1851 (巴什博奕 SG定理) A Simple Game

    这是由n个巴什博奕的游戏合成的组合游戏. 对于一个有m个石子,每次至多取l个的巴什博奕,这个状态的SG函数值为m % (l + 1). 然后根据SG定理,合成游戏的SG函数就是各个子游戏SG函数值的异 ...

  8. mysql连接超时

    这几天在跟踪一个项目的时候,老是发现mysql连接报timeout的异常. Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException ...

  9. codevs 4927 线段树练习5

    赶在期末考试之前把这道傻逼题调了出来. #include<iostream> #include<cstdio> #include<cstring> #include ...

  10. QCon 2015 阅读笔记 - 移动开发最佳实践

    所有ppt下载地址:http://pan.baidu.com/s/1mg9o4TM 下面是移动开发实践部分的阅读笔记. 移动开发网络性能优化实践 - 陈浩然 (携程) 携程是非常标准的移动App架构, ...