Inversion_树状数组***
The first line contains two integers n,m(1≤n≤105,1≤m<n) - the length of the seuqence. The second line contains n integers a1,a2,...,an(1≤ai≤n).
The sum of n in the test cases will not exceed 2×106.
3 1
1 2 3
4 2
4 1 3 2
1
【题意】给出n个数,删除其中一个长度为m的一个连续序列,求最后最小逆序数
【思路】这题精华很多,有待吸收~~
每一次移动,显然会往这个序列中删除一个数,增加一个数
1.加入一个数:多了它后面所有比它小的数,多了它前面所有比它大的数
2.删除一个数:少了它后面所有比它小的数,少了它前面所有比它大的数
用两个树状数组动态维护删除的序列前面和后面部分。
直接memset会TLE,需要限制一下清空的范围。(大神让我学了一招!!!)
参考:http://blog.csdn.net/weizhuwyzc000/article/details/49745569
#include<iostream>
#include<stdio.h>
#include<string.h>
#include<map>
#include<algorithm>
using namespace std;
const int inf=0x3f3f3f3f;
const int N=+;
int n,m,a[N];
long long b[N*],c[N*];
int lowbit(int x)
{
return x&(-x);
}
long long query(long long *d,int x)
{
int res=;
while(x)
{
res+=d[x];
x-=lowbit(x);
}
return res;
}
void update(long long *d,long long x,long long v )
{
while(x<=n)
{
d[x]+=v;
x+=lowbit(x);
}
} int main()
{
int t;
scanf("%d",&t);
while(t--)
{
int cnt=,ans=inf;
scanf("%d%d",&n,&m);
memset(b,,(n+)*sizeof(long long));
memset(c,,(n+)*sizeof(long long));
for(int i=;i<=n;i++)
scanf("%d",&a[i]);
for(int i=+m;i<=n;i++)
{
cnt+=i-m--query(b,a[i]);
update(b,a[i],);
}
ans=cnt;
for(int i=m+;i<=n;i++)
{
cnt+=query(b,a[i-m]-);
cnt+=query(c,n)-query(c,a[i-m]);
update(c,a[i-m],);
cnt-=query(b,a[i]-);
cnt-=query(c,n)-query(c,a[i]);
update(b,a[i],-);
ans=min(ans,cnt);
}
printf("%lld\n",ans);
}
return ;
}
Inversion_树状数组***的更多相关文章
- BZOJ 1103: [POI2007]大都市meg [DFS序 树状数组]
1103: [POI2007]大都市meg Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 2221 Solved: 1179[Submit][Sta ...
- bzoj1878--离线+树状数组
这题在线做很麻烦,所以我们选择离线. 首先预处理出数组next[i]表示i这个位置的颜色下一次出现的位置. 然后对与每种颜色第一次出现的位置x,将a[x]++. 将每个询问按左端点排序,再从左往右扫, ...
- codeforces 597C C. Subsequences(dp+树状数组)
题目链接: C. Subsequences time limit per test 1 second memory limit per test 256 megabytes input standar ...
- BZOJ 2434: [Noi2011]阿狸的打字机 [AC自动机 Fail树 树状数组 DFS序]
2434: [Noi2011]阿狸的打字机 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 2545 Solved: 1419[Submit][Sta ...
- BZOJ 3529: [Sdoi2014]数表 [莫比乌斯反演 树状数组]
3529: [Sdoi2014]数表 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 1399 Solved: 694[Submit][Status] ...
- BZOJ 3289: Mato的文件管理[莫队算法 树状数组]
3289: Mato的文件管理 Time Limit: 40 Sec Memory Limit: 128 MBSubmit: 2399 Solved: 988[Submit][Status][Di ...
- 【Codeforces163E】e-Government AC自动机fail树 + DFS序 + 树状数组
E. e-Government time limit per test:1 second memory limit per test:256 megabytes input:standard inpu ...
- 【BZOJ-3881】Divljak AC自动机fail树 + 树链剖分+ 树状数组 + DFS序
3881: [Coci2015]Divljak Time Limit: 20 Sec Memory Limit: 768 MBSubmit: 508 Solved: 158[Submit][Sta ...
- 树形DP+DFS序+树状数组 HDOJ 5293 Tree chain problem(树链问题)
题目链接 题意: 有n个点的一棵树.其中树上有m条已知的链,每条链有一个权值.从中选出任意个不相交的链使得链的权值和最大. 思路: 树形DP.设dp[i]表示i的子树下的最优权值和,sum[i]表示不 ...
随机推荐
- C# WebForm内置对象2+Repeater的Command
内置对象:用于页面之间的数据交互 为什么要使用这么内置对象?因为HTTP的无状态性. Session:在计算机中,尤其是在网络应用中,称为“会话控制”.Session 对象存储特定用户会话所需的属性及 ...
- 我的毕业设计——基于安卓和.NET的笔记本电脑远程控制系统
手机端: 电脑端: 答辩完成后会开放代码.
- Java8之——简洁优雅的Lambda表达式
Java8发布之后,Lambda表达式,Stream等等之类的字眼边慢慢出现在我们字眼.就像是Java7出现了之后,大家看到了“钻石语法”,看到了try-with-resource等等.面对这些新东西 ...
- 利用Cayley-Hamilton theorem 优化矩阵线性递推
平时有关线性递推的题,很多都可以利用矩阵乘法来解决. 时间复杂度一般是O(K3logn)因此对矩阵的规模限制比较大. 下面介绍一种利用利用Cayley-Hamilton theorem加速矩阵乘法的方 ...
- 解决php文件乱码
header ( "Content-Type:text/html;charset=utf-8" );//定义文件为UTF-8编码
- JSP基础语法---九九乘法表-java jsp
<%@ page language="java" import="java.util.*" contentType="text/html; ch ...
- AAS代码运行-第11章-2
hdfs dfs -ls /user/littlesuccess/AdvancedAnalysisWithSparkhdfs dfs -mkdir /user/littlesuccess/Advanc ...
- CSS字体属性大全
文章转自:http://www.10wy.net/Article/CSS/CSS_list_8.html查看更多更专业性的文章请到:网页设计网 CSS字体属性 字体名称属性(font-family) ...
- sqlmap的学习以及使用
PDF.NET(PWMIS数据开发框架)之SQL-MAP目标和规范 将复杂查询写到SQL配置文件--SOD框架的SQL-MAP技术简介 PDF.NET数据开发框架 之SQL-MAP使用存储过程 不懂还 ...
- Ruby Cucumber环境
1.http://rubyinstaller.org/downloads 下载rubyinstaller以及developmentkit(注意版本号要对应) 2.安装rubyinstaller以及解压 ...