HDU 4911
http://acm.hdu.edu.cn/showproblem.php?pid=4911
一场多校的签到题,树状数组离散化求逆序数
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std ;
typedef __int64 ll ;
int n,k ; int tree[],b[] ;
struct node
{
int num,id ;
}a[] ; int lowbit(int x){return x&(-x) ;} void update(int i,int x)
{
while(i<=n)
{
tree[i]+=x ;
i+=lowbit(i) ;
}
} int sum(int i)
{
int res= ;
while(i>)
{
res+=tree[i] ;
i-=lowbit(i) ;
}
return res ;
}
int cmp(node aa,node bb)
{
return aa.num<bb.num ;
}
int main()
{
ll ans ;
while(~scanf("%d%d",&n,&k))
{
for(int i= ;i<=n ;i++)
{
scanf("%d",&a[i].num) ;
a[i].id=i ;
}
memset(tree,,sizeof(tree)) ;
memset(b,,sizeof(tree)) ;
sort(a+,a+n+,cmp) ;
b[a[].id]= ;
for(int i= ;i<=n ;i++)
{
if(a[i].num==a[i-].num)b[a[i].id]=b[a[i-].id] ;
else b[a[i].id]=i ;
}
ans= ;
for(int i= ;i<=n ;i++)
{
update(b[i],) ;
ans+=sum(n)-sum(b[i]) ;
}
printf("%I64d\n",ans-k>?ans-k:) ;
}
return ;
}
HDU 4911的更多相关文章
- HDU 4911 (树状数组+逆序数)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4911 题目大意:最多可以交换K次,就最小逆序对数 解题思路: 逆序数定理,当逆序对数大于0时,若ak ...
- HDU 4911 http://acm.hdu.edu.cn/showproblem.php?pid=4911(线段树求逆序对)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4911 解题报告: 给出一个长度为n的序列,然后给出一个k,要你求最多做k次相邻的数字交换后,逆序数最少 ...
- HDU 4911 Inversion
http://acm.hdu.edu.cn/showproblem.php?pid=4911 归并排序求逆对数. Inversion Time Limit: 2000/1000 MS (Java/ ...
- hdu 4911 Inversion(找到的倒数)
主题链接:http://acm.hdu.edu.cn/showproblem.php?pid=4911 Inversion Time Limit: 2000/1000 MS (Java/Others) ...
- hdu 4911 求逆序对数+树状数组
http://acm.hdu.edu.cn/showproblem.php?pid=4911 给定一个序列,有k次机会交换相邻两个位置的数,问说最后序列的逆序对数最少为多少. 实际上每交换一次能且只能 ...
- 2014多校第五场1001 || HDU 4911 Inversion (归并求逆序数)
题目链接 题意 : 给你一个数列,可以随意交换两相邻元素,交换次数不超过k次,让你找出i < j 且ai > aj的(i,j)的对数最小是多少对. 思路 : 一开始想的很多,各种都想了,后 ...
- hdu 4911 Inversion (分治 归并排序 求逆序数)
题目链接 题意:给n个数,求交换k次相邻的数之后的最小的逆序数对. 用分治的方法,以前在poj上做过这种题,昨天比赛的时候忘了.... 下面的归并排序还是以前的模板. #include <ios ...
- HDU 4911 Inversion (逆序数 归并排序)
Inversion 题目链接: http://acm.hust.edu.cn/vjudge/contest/121349#problem/A Description bobo has a sequen ...
- hdu 4911 Inversion(归并排序求逆序对数)2014多校训练第5场
Inversion Time Limit: 20 ...
随机推荐
- Java 集合系列 15 Map总结
java 集合系列目录: Java 集合系列 01 总体框架 Java 集合系列 02 Collection架构 Java 集合系列 03 ArrayList详细介绍(源码解析)和使用示例 Java ...
- 预处器的对比——Sass、LESS.
发挥CSS预处器的作用是一种很有挑战性的事情.CSS预处器有不同的语言,有不同的语法和功能. 不同CSS预处器的蛮量.功能以及他们的好处——Sass.LESS 介绍 CSS预处理器是一种语言,用来编写 ...
- 菜鸟学习Andriod-弹窗
菜鸟学习Andriod-弹窗 return new AlertDialog.Builder(ZyScreenSaver.this).setIcon( R.drawable.ic_launcher).s ...
- js——全选框 checkbox
一直会碰见input 全选框的问题,先整理一种情况: 1. <input id="selectAll" type="checkbox" />全选 2 ...
- svn 备份后双机同步热备失效,提示 W200007 target server does not support atomic revision property edits svynsync:E170009
svn 备份后双机同步热备失效,提示 W200007 target server does not support atomic revision property edits; consider u ...
- freemarker小例子
1.在D盘下创建一个目录D:\\freemarker 2.在以上目录中放入一个模板文件test.ftl,内容如下: 第一个测试程序:${abc} 3.java代码如下(需要导入freemark ...
- redhat enterprixe 5.0 NFS服务配置与管理
一.了解NFS Samba 是主要用于实现Linux和Windows操作系统之间文件共享的协议,而NFS则是实现UNIX和Linux操作系统之间文件共享的协议. NFS可以把网络上远程的文件挂载到本机 ...
- 喜讯!Ubuntu 16.10(Yakkety Yak) Final Beta发布喽!!!
上月三十日,代号为"Yakkety Yak"的Ubuntu 16.10发行版本的Final Beta正式上线.Canonical的开发者Steve Langasek说道:" ...
- Linux 下一个很棒的命令行工具
导读 Taskwarrior 是 Ubuntu/Linux 下一个简单而直接的基于命令行的 TODO 工具.这个开源软件是我曾用过的最简单的基于命令行的工具之一.Taskwarrior 可以帮助你更好 ...
- iOS 文件读写
#import <Foundation/Foundation.h> @interface Utils : NSObject +(void) writeFile:(NSString *) f ...