题目:https://www.luogu.org/problemnew/show/3157


题解:

1.对于静态的逆序对可以用树状数组做

2.我们为了方便可以把删除当成增加,可以化动为静

3.找到三维:时间,位置,大小

然后CDQ分治

#include<cstdio>
#include<algorithm>
#include<cstring>
#define N 200010
typedef long long ll;
using namespace std;
ll n,m,ans[N],a[N],t[N];
struct point
{
ll t,pos,val;
bool operator < (const point &x)const
{return val>x.val;}
}p[N],tmp[N];
bool cmp(const point &x,const point &y)
{return x.t<y.t;}
void add(int x,int k)
{
for (;x<N;x+=x&-x) t[x]+=k;
}
ll query(int x)
{
ll ret=0;
for (;x;x-=x&-x) ret+=t[x];
return ret;
}
void solve(int l,int r)
{
if (l==r) return ;
int mid=l+r>>1,i=l,j=mid+1;
solve(l,mid),solve(mid+1,r);
for (int k=l;k<=r;k++)
if (i<=mid && (p[i]<p[j] || j>r))
tmp[k]=p[i++];
else tmp[k]=p[j++];
for (i=l;i<=r;i++)
{
p[i]=tmp[i];
if (p[i].t<=mid) add(p[i].pos,1);
else ans[p[i].t]+=query(p[i].pos);
}
for (i=l;i<=r;i++)
if (p[i].t<=mid) add(p[i].pos,-1);
for (i=r;i>=l;i--)
if (p[i].t<=mid) add(p[i].pos,1);
else ans[p[i].t]+=query(n)-query(p[i].pos);
for (i=l;i<=r;i++)
if (p[i].t<=mid) add(p[i].pos,-1); }
int main()
{
scanf("%lld%lld",&n,&m);
for (int i=1,x;i<=n;i++)
scanf("%lld",&x),p[x].val=x,p[x].pos=i;
for (int i=0,x;i<m;i++)
scanf("%lld",&x),p[x].t=n-i;
for (int i=1,cnt=0;i<=n;i++)
if (!p[i].t) p[i].t=++cnt;
sort(p+1,p+n+1,cmp);
solve(1,n);
for(int i=1;i<=n;i++)
ans[i]+=ans[i-1];
for(int i=n;i>=n-m+1;i--)
printf("%lld\n",ans[i]);
return 0;
}

  

最新文章

  1. CP
  2. 会动的大风车(css3)
  3. php 正则表达式捕获组与非捕获组
  4. ASP.NET MVC之文件上传【二】
  5. Android报错:The content of the adapter has changed...与Channel is unrecoverably broken and will be disposed的分析与解决办法
  6. Eclipse中输入系统变量和运行参数
  7. android ORMlite的应用
  8. svn 日志 offline 错误
  9. Linux 最大进程数
  10. gradle命令
  11. [c#]asp.net开发微信公众平台(2)多层架构框架搭建和入口实现
  12. Linux学习之常用技巧
  13. PICC国际标准ISO14443下载
  14. CG中的数据变量类型
  15. 地铁间谍 洛谷 p2583
  16. meta标签的name和http-equiv属性
  17. Python打包工具setuptools的使用
  18. application对象的应用案例
  19. closures
  20. spi slaver接口的fpga实现

热门文章

  1. VS2013使用自带的数据库 Microsoft SQL Server 2012 Express LocalDB
  2. MARK 一条关于Linux 运维方面个人向收藏网址
  3. 如果理解&amp;&amp;运算符和各类数值的布尔值
  4. Nginx 配置继承模型
  5. Git 基本命令与服务器搭建
  6. 创建控制器view的几种方式
  7. [CQOI2007]余数求和 (分块+数学
  8. SpringMVC使用注解@RequestMapping映射请求
  9. 7 Django的模板层
  10. 7 Vue.js实现loading1