Codeforces 785E 分块+树状数组
来源:互联网 发布:淘宝女装店铺logo设计 编辑:程序博客网 时间:2024/05/22 06:33
题意:1-n的序列 q个操作 每个操作后输出有多少个逆序数
题解:分块暴力 每块建个树状数组搞一搞就行了
#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>using namespace std;typedef long long ll;int a[200001],L[450],R[450],C[449][200001],belong[200001],n;void change(int k,int x,int v){ for(;x<=n;x+=x&-x) C[k][x]+=v; } int sum(int k,int x){ int ret=0; for(;x;x-=x&-x) ret+=C[k][x]; return ret; } int main(){int i,j,m;scanf("%d%d",&n,&m);int len=sqrt(n);for(i=1;i<=449;i++)L[i]=999999;if(len*len<n)len++;int kuai=(n+len-1)/len;for(i=1;i<=n;i++){a[i]=i;belong[i]=(i+kuai-1)/kuai;L[belong[i]]=min(L[belong[i]],i);R[belong[i]]=max(R[belong[i]],i);change(belong[i],i,1);}ll now=0;int l,r;for(i=1;i<=m;i++){scanf("%d%d",&l,&r);if(l>r)swap(l,r);if(l==r){printf("%lld\n",now);continue;}int bl=belong[l],br=belong[r];int sum1=0,sum2=0,len=r-l-1;if(bl==br){for(j=l+1;j<r;j++){if(a[j]>a[l])sum1++;if(a[j]<a[r])sum2++;}swap(a[l],a[r]);now=now+sum1-(len-sum1);now=now+sum2-(len-sum2);if(a[l]>a[r])now++;else now--;printf("%lld\n",now);continue;}else{for(j=l+1;j<=R[bl];j++){if(a[j]>a[l])sum1++;if(a[j]<a[r])sum2++;}for(j=L[br];j<=r-1;j++){if(a[j]>a[l])sum1++;if(a[j]<a[r])sum2++;}for(j=bl+1;j<br;j++){sum1+=sum(j,n)-sum(j,a[l]);sum2+=sum(j,a[r]);}}change(bl,a[l],-1);change(bl,a[r],1);change(br,a[r],-1);change(br,a[l],1);swap(a[l],a[r]);now=now+sum1-(len-sum1);now=now+sum2-(len-sum2);if(a[l]>a[r])now++;else now--;printf("%lld\n",now);}return 0;}
0 0
- Codeforces 785E 分块+树状数组
- Codeforces 276E(树状数组)
- Codeforces 387E 树状数组
- codeforces 785E (树状数组套平衡树)
- codeforces 191 E (树状数组+二分)
- [二维树状数组] codeforces 707E. Garlands
- 树状数组(Garlands,codeforces 707e)
- codeforces 61E 树状数组 逆向
- Codeforces-831E Cards Sorting(树状数组)
- codeforces 869E(哈希&二维树状数组)
- codeforces contest 785 problem E(分块)
- CodeForces 785E Anton and Permutation 分块
- [CodeForces #80 Div 1 D] 分块+树状数组/线段树
- bzoj2141【分块+树状数组】
- 【codeforces】163E. e-Government AC自动机+树状数组
- CodeForces 13E Holes(分块)
- Codeforces 785E 题解(树套树-树状数组套线段树)
- CodeForces 121E Lucky Array (树状数组)
- BitMap算法
- C#中的委托类型
- Linux学习笔记(1)---文件/目录权限
- redis.conf配置详细解析
- Codeforces Beta Round #71 C【KMP+DP】
- Codeforces 785E 分块+树状数组
- Wemos Motor Shield
- quicksort 快速排序 java
- C# Action委托类型
- jsp详细介绍
- org.springframework.beans.factory.BeanCreationException
- spring queryForInt
- redis数据持久化
- CCF 俄罗斯方块(201604-2)