HDU 1394 Minimum Inversion Number 线段树
2024-08-21 20:57:29
题目: http://acm.hdu.edu.cn/showproblem.php?pid=1394
没看到多组输入,WA了一万次。。。。。。
其实很简单,有人暴力过得,我感觉归并排序、二叉排序树求逆序数都可以,但是我没写。
#include <stdio.h>
#include <string.h> const int MAXN = ; struct Tree_Node
{
int left, right;
int num;
} tree[MAXN<<]; void build(int left, int right, int step)
{
tree[step].left = left;
tree[step].right = right;
tree[step].num = ;
if(left == right)
return;
int mid = (left + right) >> ;
build(left, mid, step<<);
build(mid+, right, step<<|);
} void insert(int cur, int step)
{
if(cur >= tree[step].left && cur <= tree[step].right)
tree[step].num++;
if(tree[step].left == tree[step].right)
return;
int mid = (tree[step].left + tree[step].right) >> ;
if(cur <= mid)
insert(cur, step<<);
else
insert(cur, step<<|);
} int query(int left, int right, int step)
{
if(tree[step].left == left && tree[step].right == right)
{
return tree[step].num;
}
int mid = (tree[step].left + tree[step].right) >> ;
if(right <= mid)
{
return query(left, right, step<<);
}
else if(left > mid)
{
return query(left, right, step<<|);
}
else
{
return query(left, mid, step<<) + query(mid+, right, step<<|);
}
} int main()
{
int n, x[MAXN];
while(scanf("%d", &n) != EOF)
{
int ans = ;
build(, n, );
for(int i = ; i < n; i++)
{
scanf("%d", &x[i]);
ans += query(x[i]+, n, );
insert(x[i], );
}
int tmp = ans;
for(int i = ; i < n; i++)
{
tmp += n - x[i] - x[i] - ;
if(tmp < ans)ans = tmp;
}
printf("%d\n", ans);
}
return ;
}
最新文章
- ListMultimap 容器
- jquery easyui tabs单击刷新右键刷新
- Swipe to back not working滑动后退功能消失?
- zabbix使用host metadata方式主动注册
- 巧妙的实现 CSS 斜线(炫酷的小效果)
- PHP获取汉字的转化为拼音字母实现程序
- Android 编程之第三方开发 MaoZhuaWeiBo微博开发演示样例-1
- jquery源码 DOM加载
- 范围for循环
- Linux第七节课学习笔记
- eMMC基础技术2:eMMC概述
- Webpack与其他打包工具的区别
- InfluxDB1.2.4部署(centos6.8)
- Linux基础命令---删除用户userdel
- Python基础6--函数、类和文件操作
- Emac
- Swagger ui测试中的验证 apikey
- Java图形界面设计——substance皮肤
- Python入门之面向对象编程(四)Python描述器详解
- Bootstrap 3之美01-下载并引入页面
热门文章
- jitsi
- c#中cookies的存取操作
- systemtap 列出所有linux 内核模块与相关函数2
- 使用Doxygen工具生成Cocos2D-x 2.1.0文档
- Sample Ant Build File - WAR--reference
- 使用JUnit4与JMockit进行打桩测试
- Top 10 Uses of a Message Queue
- Asp.net中前台javascript与后台C#交互
- SQL SERVER格式化字符串位数,不足补零
- virtualbox安装ubuntu出现“The system is running in low-graphics mode”