COGS 1715. [CQOI2011]动态逆序对
★★★ 输入文件:inverse.in
输出文件:inverse.out
简单对比
时间限制:2 s 内存限制:128 MB
【题目描述】
【输入格式】
【输出格式】
【样例输入】
5 4
1
5
3
4
2
5
1
4
2
【样例输出】
5
2
2
1 样例解释
(1,5,3,4,2)(1,3,4,2)(3,4,2)(3,2)(3)。
【提示】
N<=100000 M<=50000
【来源】
【题目来源】
树状数组+主席树
根cdq分治的速度差远了
#include <algorithm>
#include <cstdio>
#define N 100005
typedef long long LL;
int n,m,a[N],pos[N],size,rt[N],ls[N*],rs[N*],sum[N*],tot;
inline int lowbit(int x) {return x&(-x);}
void update(int l,int r,int &x,int t,int v)
{
if(!x) x=++tot;
sum[x]+=v;
if(l==r) return;
int mid=(l+r)>>;
if(t<=mid) update(l,mid,ls[x],t,v);
else update(mid+,r,rs[x],t,v);
}
void modify(int x,int y,int v)
{
for(;x<=n;x+=lowbit(x))
update(,n,rt[x],y,v);
}
LL query(int l,int r,int x,int L,int R)
{
if(!x) return ;
if(L<=l&&r<=R) return sum[x];
int mid=(l+r)>>;LL ret=;
if(L<=mid) ret+=query(l,mid,ls[x],L,R);
if(R>mid) ret+=query(mid+,r,rs[x],L,R);
return ret;
}
LL ask(int l,int r,int L,int R)
{
LL ret=;
for(int i=l-;i;i-=lowbit(i)) ret-=query(,n,rt[i],L,R);
for(int i=r;i;i-=lowbit(i)) ret+=query(,n,rt[i],L,R);
return ret;
}
int main()
{
freopen("inverse.in","r",stdin);
freopen("inverse.out","w",stdout);
scanf("%d%d",&n,&m);
for(int i=;i<=n;++i)
{
scanf("%d",&a[i]);
pos[a[i]]=i;
modify(i,a[i],);
}
LL ans=;
for(int i=;i<=n;++i) ans+=ask(,i-,a[i]+,n)+ask(i+,n,,a[i]-);
ans>>=;
for(int v;m--;)
{
printf("%lld\n",ans);
scanf("%d",&v);
v=pos[v];
ans-=ask(,v-,a[v]+,n)+ask(v+,n,,a[v]-);
modify(v,a[v],-);
}
return ;
}
COGS 1715. [CQOI2011]动态逆序对的更多相关文章
- BZOJ 3295: [Cqoi2011]动态逆序对
3295: [Cqoi2011]动态逆序对 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 3865 Solved: 1298[Submit][Sta ...
- Bzoj 3295: [Cqoi2011]动态逆序对 分块,树状数组,逆序对
3295: [Cqoi2011]动态逆序对 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 2886 Solved: 924[Submit][Stat ...
- bzoj3295[Cqoi2011]动态逆序对 树套树
3295: [Cqoi2011]动态逆序对 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 5987 Solved: 2080[Submit][Sta ...
- P3157 [CQOI2011]动态逆序对(树状数组套线段树)
P3157 [CQOI2011]动态逆序对 树状数组套线段树 静态逆序对咋做?树状数组(别管归并QWQ) 然鹅动态的咋做? 我们考虑每次删除一个元素. 减去的就是与这个元素有关的逆序对数,介个可以预处 ...
- P3157 [CQOI2011]动态逆序对
P3157 [CQOI2011]动态逆序对 https://www.luogu.org/problemnew/show/P3157 题目描述 对于序列A,它的逆序对数定义为满足i<j,且Ai&g ...
- 2018.07.01 BZOJ3295: [Cqoi2011]动态逆序对(带修主席树)
3295: [Cqoi2011]动态逆序对 **Time Limit: 10 Sec Memory Limit: 128 MB Description 对于序列A,它的逆序对数定义为满足i<j& ...
- [BZOJ3295][Cqoi2011]动态逆序对 CDQ分治&树套树
3295: [Cqoi2011]动态逆序对 Time Limit: 10 Sec Memory Limit: 128 MB Description 对于序列A,它的逆序对数定义为满足i<j,且 ...
- bzoj千题计划146:bzoj3295: [Cqoi2011]动态逆序对
http://www.lydsy.com/JudgeOnline/problem.php?id=3295 正着删除看做倒着添加 对答案有贡献的数对满足以下3个条件: 出现时间:i<=j 权值大小 ...
- BZOJ3295: [Cqoi2011]动态逆序对(树状数组套主席树)
3295: [Cqoi2011]动态逆序对 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 7465 Solved: 2662[Submit][Sta ...
随机推荐
- 面试题: mysql数据库 已看1 索引和事务 没用
mysql数据库面试总结 2017年09月04日 00:11:40 阅读数:151 结合网上大神还有自己面试经历,收集的总结Mysql面试题,方便自己准备面试: mysql一个永远都复习不完,尽量总结 ...
- 简单的GTK窗体搭建
#include<gtk/gtk.h> //必须引用gtk/gtk.h这个头文件 2 int main(int argc,char *argv[]) //标准c语言主函数的声明 3 { 4 ...
- [Xcode 实际操作]六、媒体与动画-(15)使用AudioPlayer播放音乐
目录:[Swift]Xcode实际操作 本文将演示如何播放音频素材. 在项目名称上点击鼠标右键,弹出右键菜单, 选择[Add Files to "DemoApp"],往项目中导入文 ...
- vue+element级联选择器对接后台数据
1.后台接口返回的数据肯定要和级联选择器的数据一致,所以我专门弄个model存放返回的值,如下:/** * @Auther: GGDong * @Date: 2019/4/3 10:30 */@Get ...
- HTML5元素拖放设置总结
将元素图片放入div盒子内 1.首先设置元素为可拖放:在img标签内加入draggable=”true”. <img draggable="true"> 2.设置元素的 ...
- 关于HTML5用SVG画图
SVG在HTML5中的应用 SVG(Scalable Vector Graphics)是用来绘制矢量图的HTML5标签.只要定义好XML属性就能够获得与其一致的图像元素. 使用SVG之前先将标签加入到 ...
- Nacos深入浅出(五)
四中标色的代码 result = ConfigService.dump(dataId, group, tenant, cf.getContent(), lastModified); 我们看下这个方法 ...
- values.xml:3:5-58:857: AAPT: error: resource android:attr/fontVariationSettings not found.
修改app/build.gradle中的版本 compileSdkVersion 28 targetSdkVersion 28 具体不知道为何要修改为28,但在android/build.gradle ...
- IDEA导入HttpServlet包
转载此篇博客,言简意赅.https://blog.csdn.net/liu_yanzhao/article/details/78838670
- Javascript中常用方法简介
Array数组常用方法 先创建一个数组var abc = [1,2,3,4,5,6,7,8,9]; (1)pop(); 这个方法会删除数组的最后一项并返回删除掉的值. 比如:console ...