hdu 5497 Inversion 树状数组 逆序对,单点修改
Inversion
Time Limit: 1 Sec
Memory Limit: 256 MB
题目连接
http://acm.hdu.edu.cn/showproblem.php?pid=5497
Description
你有一个序列\{a_1,a_2,...,a_n\}{a1,a2,...,an},然后你可以删除一个长度为mm的连续子序列. 问如何删除才能使逆序对最少.
Input
输入有多组数据, 第一行有一个整数TT表示测试数据的组数. 对于每组数据: 第一行包含2个整数n,m (1 \le n \le 10^5, 1 \le m < n)n,m(1≤n≤105,1≤m<n), 表示序列的长度. 第2行包含nn个整数a_1,a_2,...,a_n (1 \le a_i \le n)a1,a2,...,an(1≤ai≤n). 数据中所有nn的和不超过2 \times 10^62×106.
Output
对于每组数据, 输出最小的逆序对个数
Sample Input
2
3 1
1 2 3
4 2
4 1 3 2
Sample Output
0
1
HINT
题意
题解:
直接把所有情况都枚举出来就好了
假设原逆序对有ans个,L[i]表示在左边有L[i]个数比i大,R[i]表示在右边,有R[i]个数比i小
如果插入一个大小为x的点在y位置的话,答案就是 ans+L[i]+R[i]
如果删除一个大小为x的点在y位置的话,答案就是 ans -L[i]-R[i]
所以区间在滑动的时候,ans = ans + L[i] -L[i+m] + R[i] - R[i+m]
L[i]和R[i]用树状数组来维护
@)1%KBO0HM418$J94$1R.jpg)
代码:
#include<iostream>
#include<stdio.h>
#include<queue>
#include<map>
#include<algorithm>
#include<string.h>
using namespace std; #define maxn 100005
struct Bit
{
int a[maxn];
void init()
{
memset(a,,sizeof(a));
}
int lowbit(int x)
{
return x&(-x);
}
int query(int x)
{
int ans = ;
for(;x;x-=lowbit(x))ans+=a[x];
return ans;
}
void update(int x,int v)
{
for(;x<maxn;x+=lowbit(x))
a[x]+=v;
}
}L,R;
int a[maxn];
int main()
{
int t;scanf("%d",&t);
while(t--)
{
int n,m;
scanf("%d%d",&n,&m);
L.init(),R.init();
for(int i=;i<=n;i++)
scanf("%d",&a[i]);
long long tmp = ;
for(int i=n;i>m;i--)
{
R.update(a[i],);
tmp+=R.query(a[i]-);
}
long long ans = tmp;
for(int i=;i<=n-m;i++)
{
R.update(a[i+m],-);
tmp+=R.query(a[i]-);
tmp-=R.query(a[i+m]-);
tmp+=L.query(n+-(a[i]+));
tmp-=L.query(n+-(a[i+m]+));
L.update(n+-(a[i]),);
ans=min(ans,tmp);
}
cout<<ans<<endl;
}
}
hdu 5497 Inversion 树状数组 逆序对,单点修改的更多相关文章
- HDU 2689Sort it 树状数组 逆序对
Sort it Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Sub ...
- [树状数组+逆序对][NOIP2013]火柴排队
火柴排队 题目描述 涵涵有两盒火柴,每盒装有n根火柴,每根火柴都有一个高度.现在将每盒中的火柴各自排成一列,同一列火柴的高度互不相同,两列火柴之间的距离定义为:∑ (ai-bi)2,i=1,2,3,. ...
- HDU 3333 Turing Tree 离线 线段树/树状数组 区间求和单点修改
题意: 给一个数列,一些询问,问你$[l,r]$之间不同的数字之和 题解: 11年多校的题,现在属于"人尽皆知傻逼题" 核心思想在于: 对于一个询问$[x,R]$ 无论$x$是什么 ...
- hdu 2838 Cow Sorting (树状数组+逆序对)
题目 题意:给你N个排列不规则的数,任务是把它从小到大排好,每次只能交换相邻两个数,交换一次的代价为两数之和,求最小代价 拿到这道题,我根本看不出这道题和树状数组有半毛钱关系,博客之,全说用树状数组做 ...
- Codevs 3286 火柴排队 2013年NOIP全国联赛提高组 树状数组,逆序对
题目:http://codevs.cn/problem/3286/ 3286 火柴排队 2013年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : ...
- Bzoj 2789: [Poi2012]Letters 树状数组,逆序对
2789: [Poi2012]Letters Time Limit: 20 Sec Memory Limit: 128 MBSubmit: 278 Solved: 185[Submit][Stat ...
- Bzoj 3295: [Cqoi2011]动态逆序对 分块,树状数组,逆序对
3295: [Cqoi2011]动态逆序对 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 2886 Solved: 924[Submit][Stat ...
- Bzoj 3289: Mato的文件管理 莫队,树状数组,逆序对,离散化,分块
3289: Mato的文件管理 Time Limit: 40 Sec Memory Limit: 128 MBSubmit: 1539 Solved: 665[Submit][Status][Di ...
- Poj 2299 - Ultra-QuickSort 离散化,树状数组,逆序对
Ultra-QuickSort Time Limit: 7000MS Memory Limit: 65536K Total Submissions: 52306 Accepted: 19194 ...
随机推荐
- ubuntu终端颜色配置
对于刚接触ubuntu的同学们,打开终端(ctrl+alt+T),会发现里面都是一个颜色,不管是用户名.主机名还是命令都是白色,当然,用 ls 列出文件的时候是会多一种颜色的.即使这样,对开发人员来说 ...
- Hibernate一对多和多对一关系详解 (转载)
:双向一对多关系,一是关系维护端(owner side),多是关系被维护端(inverse side).在关系被维护端需要通过@JoinColumn建立外键列指向关系维护端的主键列. publ ...
- 大四实习准备2_java异常处理_android控件练习
2015-4-24 Java 异常处理 可以有多个catch;ArrayIndexOutOfBoundsException类是Exception类的子类RuntimeException类的一个间接子类 ...
- bzoj1856
这是一道无比涨姿势的题目 首先总结一下这种输入几个数的题目, 一般不是递推就是数学题 显然,这道题用递推是无法做到O(n)的复杂度的 那我们就考虑这是一道数学题了 我已开始纠结在正向思维了,正向求好像 ...
- Web请求响应简单整理
简单对Web请求响应如何处理进行的整理,难免有理解不到位,理解有偏差的地方,如有理解有误的地方,希望大牛批评指正. 1.Web开发的定义首先看看微软对Web开发的定义:Web开发是一个指代网页或网 ...
- Spark(1) - Getting Started with Apache Spark
Introduction Apache Spark is a general-purpose cluster computing system to process big data workload ...
- java产生随机数的几种方式(转)
一.在j2se里我们可以使用Math.random()方法来产生一个随机数,这个产生的随机数是0-1之间的一个double,我们可以把他乘以一定的数,比如说乘以100,他就是个100以内的随机,这个在 ...
- POJ 1067 取石子游戏
题意:有两堆个数分别为a和b的石子,两个人轮流取石子,一次可以取一堆中任意个数的石子,或者在两堆中取相同个数的石子,最先没有石子可以取的人输,你先取,赢为1输为0. 解法:威佐夫博弈.看完题先找规律, ...
- FZU 2105-Digits Count(线段树延时标记)
题意: 每次操作区间每个数进行一种(&或|.或^ )给定的一个数,到sum时统计给定区间的和. 分析: 这个题让我觉得我的思维很不活跃,对懒惰标记理解,还远远不够,通过这道题我对懒惰标记加深了 ...
- 自问自答之VR遐想
先让我组织一下语言,作为表达能力超弱的战五渣来讲,归纳总结什么的最要命了. 我可以给你分析个1到N条出来,但是一般来讲没什么顺序,想到什么就说什么.而且我属于线性思维,有一个引子就可以按着话头一步步发 ...