【HDOJ】1394 Minimum Inversion Number
逆序数的性质。
1. 暴力解
#include <stdio.h>
#define MAXNUM 5005
int a[MAXNUM];
int main() {
int n;
int i, j, sum, min;
while (scanf("%d", &n) != EOF) {
for (i=; i<n; ++i)
scanf("%d", &a[i]);
sum = ;
for (i=; i<n; ++i) {
for (j=i+; j<n; ++j)
if (a[j] < a[i])
++sum;
}
min = sum;
for (i=; i<n; ++i) {
sum += n - - a[i]*;
if (sum < min)
min = sum;
//printf("%d\n", sum);
}
printf("%d\n", min);
}
return ;
}
2. 线段树。需要理解如何求逆序数。
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std; #define lson l, m, rt<<1
#define rson m+1, r, rt<<1|1 const int maxn = ; int nums[maxn<<];
int a[maxn]; void PushUP(int rt) {
nums[rt] = nums[rt<<] + nums[rt<<|];
} void build(int l, int r, int rt) {
nums[rt] = ;
if (l == r) return;
int m = (l+r)>>;
build(lson);
build(rson);
} void update(int p, int l, int r, int rt) {
if (l == r) {
nums[rt] = ;
return ;
}
int m = (l+r)>>;
if (p <= m)
update(p, lson);
else
update(p, rson);
PushUP(rt);
} int query(int ll, int rr, int l, int r, int rt) {
if (ll<=l && rr>=r) {
return nums[rt];
}
int m = (l+r)>>;
int ret = ;
if (ll <= m)
ret += query(ll, rr, lson);
if (rr > m)
ret += query(ll, rr, rson); return ret;
} int main() {
int n;
int i, sum, min; while (scanf("%d", &n) != EOF) {
build(, n-, );
sum = ;
for (i=; i<n; ++i) {
scanf("%d", &a[i]);
sum += query(a[i], n-, , n-, );
update(a[i], , n-, );
//printf("%d: sum=%d\n", i, sum);
}
min = sum;
for (i=; i<n; ++i) {
sum += n - - a[i]*;
if (sum < min)
min = sum;
}
printf("%d\n", min);
} return ;
}
【HDOJ】1394 Minimum Inversion Number的更多相关文章
- 逆序数2 HDOJ 1394 Minimum Inversion Number
题目传送门 /* 求逆序数的四种方法 */ /* 1. O(n^2) 暴力+递推 法:如果求出第一种情况的逆序列,其他的可以通过递推来搞出来,一开始是t[1],t[2],t[3]....t[N] 它的 ...
- HDU 1394 Minimum Inversion Number ( 树状数组求逆序数 )
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1394 Minimum Inversion Number ...
- HDU.1394 Minimum Inversion Number (线段树 单点更新 区间求和 逆序对)
HDU.1394 Minimum Inversion Number (线段树 单点更新 区间求和 逆序对) 题意分析 给出n个数的序列,a1,a2,a3--an,ai∈[0,n-1],求环序列中逆序对 ...
- HDU 1394 Minimum Inversion Number(线段树求最小逆序数对)
HDU 1394 Minimum Inversion Number(线段树求最小逆序数对) ACM 题目地址:HDU 1394 Minimum Inversion Number 题意: 给一个序列由 ...
- HDU 1394——Minimum Inversion Number——————【线段树单点增减、区间求和】
Minimum Inversion Number Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & ...
- 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(最小逆序数 线段树)
Minimum Inversion Number [题目链接]Minimum Inversion Number [题目类型]最小逆序数 线段树 &题意: 求一个数列经过n次变换得到的数列其中的 ...
- hdu 1394 Minimum Inversion Number - 树状数组
The inversion number of a given number sequence a1, a2, ..., an is the number of pairs (ai, aj) that ...
- hdu 1394 Minimum Inversion Number 逆序数/树状数组
Minimum Inversion Number Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showprob ...
随机推荐
- codeforces 580D Kefa and Dishes(状压dp)
题意:给定n个菜,每个菜都有一个价值,给定k个规则,每个规则描述吃菜的顺序:i j w,按照先吃i接着吃j,可以多增加w的价值.问如果吃m个菜,最大价值是多大.其中n<=18 思路:一看n这么小 ...
- 经常使用的两个清爽的table样式
两个我经常使用的table样式: <html> <head> <title></title> <style type="text/css ...
- jQuery 取值、赋值的基本方法【转藏】
/*获得TEXT.AREATEXT的值*/ var textval = $("#text_id").attr("value"); //或者 var textva ...
- Linked Server for SQL Server 2012(x64) to Oracle Database 12c(x64)
因为把两台数据库装了同一台机机器上,所以没有安装oracle Client的部分,Oracle部分使用netca创建的Net Service Name,使用tnsping以及登入方式的确认用户权限的以 ...
- Java 中判断char 是否为空格 和空
//判断是否char是否为空import java.util.*; public class test{ public static void main(String[] args){ String ...
- (五)Struts2 标签
所有的学习我们必须先搭建好Struts2的环境(1.导入对应的jar包,2.web.xml,3.struts.xml) 第一节:Struts2 标签简介 Struts2 自己封装了一套标签,比JSTL ...
- 利用反射把查询到的Table、Reader转换成List、Model
菜鸟一枚,入园已有两年三个月,这还是第一次写博客,请各位大神斧正. 这是我写的一个工具类,通常我们从数据库查询到一个 DataReader 或者是 一个 Table , 想要转换成 一个 lis ...
- Linux 下的 blog客户端
apt-cahce search metaweblog found gnome-blog blogilo try blogilo
- Vive开发教程汇总
最近在整理在HTC Vive平台上开发VR应用程序的教程,现在把结果全部汇总在下面的表格里,希望更多的开发者参与到VR内容的开发之中,真的很好玩.现在主流的开发VR应用的引擎是Unity3D和Unre ...
- 使用JsPlumb绘制拓扑图的通用方法
转自:http://www.it165.net/pro/html/201311/7616.html 使用JsPlumb绘制拓扑图的通用方法 一. 实现目标 绘制拓扑图, 实际上是个数据结构和算法的问题 ...