HDU 1394
单点,利用线段树解题,看到数据大小一定要敏感,说不定就是暗藏的解题思路
#include <stdio.h>
#define lson l,mid,id<<1
#define rson mid+1,r,id<<1|1
const int MM= ;
int sum[MM<<]; void build_tree(int l,int r,int id)
{
sum[id]=;
if(l==r)
{
return;
}
else
{
int mid=(l+r)>>;
build_tree(lson);
build_tree(rson);
} }
int Query(int L,int R,int l,int r,int id)
{
if(L<=l&&r<=R)
{
return sum[id];
}
else
{
int mid=(l+r)>>;int ret=;
if(L<=mid)ret+=Query(L,R,lson);
if(R>mid)ret+=Query(L,R,rson);
return ret;
}
}
void update(int pos,int l,int r,int id)
{
if(l==r)
{
sum[id]++;return;
}
else{
int mid=(l+r)>>;
if(pos<=mid)update(pos,lson);
if(pos>mid)update(pos,rson);
sum[id]=sum[id<<]+sum[id<<|];
}
}
int main()
{
int n,i,seg[MM];
while(~scanf("%d",&n))
{
build_tree(,n-,);
int ans=;
for(i=;i<n;i++)
{
scanf("%d",&seg[i]);
ans+=Query(seg[i],n-,,n-,);
/*
+比seg[i]大的数,按输入顺序,因为每个数都不会超过n,所以简单了许多
*/
update(seg[i],,n-,);
}
int min=ans;
for(i=;i<n;i++)
{
ans+=n-seg[i]*-;
/*
比seg[i]小的-seg[i],seg[i]移到最后,+(n-seg[i]-1)
*/
if(ans<min)
{
min=ans;
}
}
printf("%d\n",min );
}
}
HDU 1394的更多相关文章
- HDU 1394 Minimum Inversion Number(线段树/树状数组求逆序数)
Minimum Inversion Number Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java ...
- HDU 1394 Minimum Inversion Number(线段树的单点更新)
点我看题目 题意 :给你一个数列,a1,a2,a3,a4.......an,然后可以求出逆序数,再把a1放到an后,可以得到一个新的逆序数,再把a2放到a1后边,,,,,,,依次下去,输出最小的那个逆 ...
- hdu 1394 线段树
Minimum Inversion Number Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java ...
- HDU.1394 Minimum Inversion Number (线段树 单点更新 区间求和 逆序对)
HDU.1394 Minimum Inversion Number (线段树 单点更新 区间求和 逆序对) 题意分析 给出n个数的序列,a1,a2,a3--an,ai∈[0,n-1],求环序列中逆序对 ...
- HDU 1394——Minimum Inversion Number——————【线段树单点增减、区间求和】
Minimum Inversion Number Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & ...
- HDU 1394 Minimum Inversion Number(线段树求最小逆序数对)
HDU 1394 Minimum Inversion Number(线段树求最小逆序数对) ACM 题目地址:HDU 1394 Minimum Inversion Number 题意: 给一个序列由 ...
- 线段树 逆序对 Minimum Inversion Number HDU - 1394 Laptop
Minimum Inversion Number HDU - 1394 求最小反转数,就是求最少的逆序对. 逆序对怎么求,就是先把所有的数都初始化为0,然后按照顺序放入数字,放入数字前查询从这个数往后 ...
- HDU 1394 Minimum Inversion Number ( 树状数组求逆序数 )
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1394 Minimum Inversion Number ...
- hdu 1394 Minimum Inversion Number(树状数组)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1394 题意:给你一个0 — n-1的排列,对于这个排列你可以将第一个元素放到最后一个,问你可能得到的最 ...
- HDU 1394 Minimum Inversion Number(线段树求逆序对)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1394 解题报告:给出一个序列,求出这个序列的逆序数,然后依次将第一个数移动到最后一位,求在这个过程中 ...
随机推荐
- 【jqGrid for ASP.NET MVC Documentation】.学习笔记.6.分层
1 两级分层 每个父 grid 的行,都能有子 grid .这被叫做 层次,它用来显示相关的 表,主信息 –> 明细信息等. } 一旦你为 父子 grid 都定义了 Models ,下一步就是设 ...
- HTML5 拖拽复制功能的实现方法
Internet Explorer 9FirefoxOpera 12ChromeSafari 5 v1.0代码部分 <!DOCTYPE html><html><head& ...
- [c++][语言语法]stringstream iostream ifstream
c++中ifstream一次读取整个文件 读取至char*的情况 std::ifstream t; int length; t.open("file.txt"); // open ...
- 关于匿名类无法转换为object
缘由,不能在Razor中使用匿名类, 先事先封装了一个方法,用于Razor给cshtml模板返回页面. 在ashx一般处理程序中,是这样调用的 匿名类的格式如下:(只看格式,不看具体内容) 调用这样 ...
- Sublime Text2一些快捷键收藏
快捷键 XP版 Ctrl+P 搜索文件 Ctrl+R 搜索方法 ...
- c3p0数据库连接池(作用不重复)
/* * c3p0数据库连接池: * 只被初始化一次 * connection对象进行close时,不是正的关闭,而是将该数据连接归还给数据库连接池 * * */ 四个架包 mysql-connect ...
- Uva 1218 完美的服务
题目链接:https://uva.onlinejudge.org/external/12/1218.pdf 题意: 一个网络,选出一些点做服务器,使满足一些条件,求服务器最少数量.条件是,每个计算机恰 ...
- HashMap, HashTable, CurrentHashMap的区别
转载:http://www.jianshu.com/p/c00308c32de4 HashMap vs ConcurrentHashMap 引入ConcurrentHashMap是为了在同步集合Has ...
- drivers/mfd/Mfd-core.c
mfd: multifunction device drivers---多功能设备驱动开发:A product or device that has multiple functions. An ex ...
- winform中treeview中节点选中的技巧
我想实现譬如选择某子节点的时候,父节点会自动选中,如果选择父节点,子节点会全部选中,如果子节点全部不选,父节点也要不选. 贴代码 private void tvwMenu_AfterCheck(obj ...