hdu1394
- //Accepted 292 KB 46 ms
- //利用线段树求逆序数
- //对于每个数看前面比他大的数有多少个,更新这个数的个数
- #include <cstdio>
- #include <cstring>
- #include <iostream>
- #include <queue>
- #include <cmath>
- #include <algorithm>
- using namespace std;
- /**
- * This is a documentation comment block
- * 如果有一天你坚持不下去了,就想想你为什么走到这儿!
- * @authr songt
- */
- ;
- struct node
- {
- int l,r;
- int sum;
- }f[*imax_n];
- int a[imax_n];
- int n;
- void build(int t,int l,int r)
- {
- f[t].l=l;
- f[t].r=r;
- f[t].sum=;
- if (l==r)
- {
- return ;
- }
- ;
- build(*t,l,mid);
- build(*t+,mid+,r);
- }
- void update(int t,int l)
- {
- if (f[t].l==l && f[t].r==l)
- {
- f[t].sum++;
- return ;
- }
- ;
- *t,l);
- *t+,l);
- f[t].sum=f[*t].sum+f[*t+].sum;
- }
- int query(int t,int l,int r)
- {
- if (f[t].l==l && f[t].r==r)
- {
- return f[t].sum;
- }
- ;
- *t,l,r);
- else
- {
- *t+,l,r);
- *t,l,mid)+query(*t+,mid+,r);
- }
- }
- void slove()
- {
- build(,,n);
- ;
- int ans;
- ;i<n;i++)
- {
- update(,a[i]);
- if (a[i]==n) continue;
- ,a[i]+,n);
- sum+=t;
- //printf("%d ",t);
- }
- //printf("\n");
- //printf("%d\n",sum);
- ans=sum;
- ;i<n;i++)
- {
- sum=sum+(n-a[i])-(a[i]-);
- if (sum<ans) ans=sum;
- }
- printf("%d\n",ans);
- }
- int main()
- {
- while (scanf("%d",&n)!=EOF)
- {
- ;i<n;i++)
- {
- scanf("%d",&a[i]);
- a[i]++;
- }
- slove();
- }
- ;
- }
hdu1394的更多相关文章
- hdu1394(Minimum Inversion Number)线段树
明知道是线段树,却写不出来,搞了半天,戳,没办法,最后还是得去看题解(有待于提高啊啊),想做道题还是难啊. 还是先贴题吧 HDU-1394 Minimum Inversion Number Time ...
- 【hdu1394】Minimum Inversion Number
Problem Description The inversion number of a given number sequence a1, a2, ..., an is the number of ...
- [hdu1394]Minimum Inversion Number(树状数组)
Minimum Inversion Number Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java ...
- HDU-1394 Minimum Inversion Number 线段树+逆序对
仍旧在练习线段树中..这道题一开始没有完全理解搞了一上午,感到了自己的shabi.. Minimum Inversion Number Time Limit: 2000/1000 MS (Java/O ...
- 线段树求逆序数方法 HDU1394&&POJ2299
为什么线段树能够求逆序数? 给一个简单的序列 9 5 3 他的逆序数是3 首先要求一个逆序数有两种方式:能够从头開始往后找比当前元素小的值,也能够从后往前找比当前元素大的值,有几个逆序数就是几. 线段 ...
- HDU1394 Minimum Inversion Number(线段树OR归并排序)
Minimum Inversion Number Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java ...
- 【HDU1394】Minimum Inversion Number(线段树)
大意:n次操作原串查询逆序数,求出所有串中最小的逆序数. 求逆序数属于线段树的统计问题,建立空树,每次进行插点时进行一次query操作即可.n次操作可以套用结论:如果是0到n的排列,那么如果把第一个数 ...
- 【线段树求逆序数】【HDU1394】Minimum Inversion Number
题目大意: 随机给你全排列中的一个,但不断的把第一个数丢到最后去,重复N次,形成了N个排列,问你这N个排列中逆序数最小为多少 做法: 逆序数裸的是N^2 利用线段树可以降到NlogN 具体方法是插入一 ...
- hdu1394(线段树求逆序对)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=1394 线段树功能:update:单点增减 query:区间求和 分析:如果是0到n-1的排列,那么如果 ...
随机推荐
- 【转】PackageInfo、ResolveInfo 笔记
1.PackageInfo.ResolveInfo PackageItemInfo:包含了一些信息的基类, 它的直接子类有: ApplicationInfo. ComponentInfo.Instru ...
- 在Ubuntu 14 上安装 Nginx-RTMP 流媒体服务器
一:RTMP RTMP流媒体协议是 一套 Adobe 开发的音频视频实时传输协议: 二:Nginx-rtmp nginx-rtmp 是一个基于nginx的 RTMP服务模块,开源,免费 https:/ ...
- 简单的css居中问题(日常记录)
1.今天遇到了一个奇怪的问题:因为网页要适配大小分辨屏幕,需要把一张图片放到div中,我的初始思路是把图放在div中绝对对位给top50%left50%,但是不行,因为当网页调窄时图片就因为显得太大了 ...
- Run “mvn clean install” in Eclipse
1.在Maven项目或者pom.xml上右键-->Run As -->"Maven Build..."或者"Run Configuration-->Ma ...
- android 圆角边框及图片
<?xml version="1.0" encoding="UTF-8"?> <shape xmlns:android="http: ...
- 关于SQL语句优化的一个问题
今天写了一个很简单的存储过程,结果一执行,40多秒,后来调整了一句话写法,瞬间出来,其实差别不大,如下: select item_no=vpc.ITEM_ID ,BL_QTY=sum(vpc.QTY_ ...
- 5月5日 while、do{}while
while .do{}while 一.while的死循环 while (1 == 1)//只要表达式里是true,就是死循环 { //循环内容 } 二.do{}while 不管while是否满足,首先 ...
- spring校验相关
转载:http://elim.iteye.com/blog/1812584 对于任何一个应用而言在客户端做的数据有效性验证都不是安全有效的,这时候就要求我们在开发的时候在服务端也对数据的有效性进行验证 ...
- 在单元测试中指定log4j的配置文件
在开发过程中,我们会使用到log4j来输出日志,我们希望在单元测试的时候,只看到部分日志信息,或者定义日志输出的级别. 这个时候手工指定log4j的配置文件: 具体做法如下: 定义类如下: i ...
- jQuery EasyUI Combobox无法检索中文输入的问题
在项目里使用了EasyUI的Combobox,当ComboBox的item是英文时,都能正常检索出对应项,但是如果使用中文输入法输入几个字母然后通过按shift键输入时,奇怪的事情发生了,combob ...