【树状数组】【尺取法】
来源:互联网 发布:常用建模软件 编辑:程序博客网 时间:2024/04/28 16:03
#include <iostream> // hdu5497#include <cstring>#include <stdio.h>#include <algorithm>using namespace std;#define lowbit(x) x&(-x)const int maxn = 1e5+10;int a[maxn];int t[2][maxn]; int n,m; typedef long long ll;int sum(int mode,int x){ int ret = 0; for(int i=x;i>0;i-=lowbit(i)) { ret += t[mode][i]; } return ret;}void update(int mode,int x,int val){ for(int i=x;i<=n;i+=lowbit(i)) { t[mode][i] += val; }}int main(){ int T; scanf("%d",&T); while(T--) { memset(t,0,sizeof(t)); scanf("%d%d",&n,&m); for(int i=1;i<=n;i++) { scanf("%d",&a[i]); } ll ans = 0; for(int i=m+1;i<=n;i++) { ans += i-m-1 - sum(0,a[i]); update(0,a[i],1); } ll ret = ans; for(int i=m+1;i<=n;i++) { ans -= sum(0,a[i]-1); ans -= sum(1,n)-sum(1,a[i]); update(0,a[i],-1); ans += sum(0,a[i-m]-1); ans += sum(1,n)-sum(1,a[i-m]); update(1,a[i-m],1); ret = min(ret,ans); } printf("%I64d\n",ret); } return 0;}
0 0
- 【树状数组】【尺取法】
- hdu 5192 尺取法 树状数组
- 关于521 (用树状数组(尺取法))
- HDU 4777 Rabbit Kingdom(树状数组+离线处理+尺取法)
- 尺取法
- 尺取法
- 尺取法
- 尺取法
- 尺取法
- 尺取法
- 尺取法
- 尺取法
- 【尺取法】
- 尺取法
- 尺取法
- 尺取法
- 尺取法
- 尺取法
- 51nod 1065 最小正子段和 (贪心_好题)
- 黑马程序员—IO流(2)
- 字符串
- 为什么C++中只有指针和引用才能实现多态?
- df 命令
- 【树状数组】【尺取法】
- UVa10600 ACM Contest and Blackout
- Android学习之路
- 为什么我要用 Node.js? 案例逐一介绍
- ios-发送邮件两种方式实现
- Generate Parentheses
- 华为oj_查找组成一个偶数最接近的两个素数
- 进入初创公司
- POJ 1017 Packets 简单模拟