【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 ...
随机推荐
- VS2015+TFS2015源代码管理
使用Visual Studio连接TFS
- ASP.NET分页存储过程,解决搜索时丢失条件信息
存储过程: -- ============================================= -- Author: -- Create date: -- Description: 分页 ...
- MYSQL之高级查询
PHP高级查询 分组查询.联合查询.连接查询.子查询 版权声明:本文为博主原创文章,未经博主允许不得转载.
- C#设置与获取目录权限(.net控制ACL)
找到两种方式可以修改文件夹的权限 第一种: 想用c#来设置和读取ntfs分区上的目录权限,找了很多资料,未果.终于发现了一段vb.net的代码,做了修改,以C#展示给大家. using System; ...
- Chart图形 [GDI+] OWCChart统计图的封装类 (转载)
点击下载 OWCChart.zip 利用OWC11进行作统计图的封装类. /// <summary> /// 类说明:进行作统计图的封装类 /// 联系方式:361983679 /// 更 ...
- android下面res目录
1. 相关文件夹介绍 在Android项目文件夹里面,主要的资源文件是放在res文件夹里面的.assets文件夹是存放不进行编译加工的原生文件,即该文件夹里面的文件不会像xml,java文件 ...
- Jsp内置对象-session
session内置对象介绍 个人理解:session因为是唯一的, session是与请求有关的会话期,它是java.servlet.http.HttpSession类的对象,用来表示和存储当前页面的 ...
- 在mipsel-linux平台上的编译应用SQLite-3.5.9
sqlite 第一个Alpha版本诞生于2000年5月,是实现了SQL 92标准的一个大子集的嵌入式数据库,其以在一个库中组合了数据库引擎和接口,能将所有数据存储于单个文件中.官方测试表明sqlite ...
- 使用Newtonsoft.Json序列化和反序列化对象(源码)
Json数据格式,简单而强大. 使用Json,不得不提到Newtonsoft.Json,它帮助我们更方便的使用Json,当然,不使用它也是可以的,还有许多方法将对象序列化成Json字符串,暂且不提. ...
- 查看oracle 启动了多久
想看一下系统正常运行了多少天?开机多长时间没有重启了? windows系统 C:\>systeminfo |find “系统启动时间”系统启动时间: 265 天 4 小时 26 分 32 ...