题目描述

破解了符文之语,小FF开启了通往地下的道路。当他走到最底层时,发现正前方有一扇巨石门,门上雕刻着一幅古代人进行某种活动的图案。而石门上方用古代文写着“神的殿堂”。小FF猜想里面应该就有王室的遗产了。但现在的问题是如何打开这扇门……

仔细研究后,他发现门上的图案大概是说:古代人认为只有智者才是最容易接近神明的。而最聪明的人往往通过一种仪式选拔出来。仪式大概是指,即将隐退的智者为他的候选人写下一串无序的数字,并让他们进行一种操作,即交换序列中相邻的两个元素。而用最少的交换次数使原序列变成不下降序列的人即是下一任智者。

小FF发现门上同样有着n个数字。于是他认为打开这扇门的秘诀就是找到让这个序列变成不下降序列所需要的最小次数。但小FF不会……只好又找到了你,并答应事成之后与你三七分……

输入输出格式

输入格式:

第一行为一个整数n,表示序列长度

第二行为n个整数,表示序列中每个元素。

输出格式:

一个整数ans,即最少操作次数。

输入输出样例

输入样例#1:

4
2 8 0 3
输出样例#1:

3

说明

对于30%的数据1≤n≤10^4。

对于100%的数据1≤n≤5*10^5;

-maxlongint≤A[i]≤maxlongint。

样例说明:开始序列为2 8 0 3,目标序列为0 2 3 8,可进行三次操作的目标序列:

1.Swap (8,0):2  0  8  3

2.Swap (2,0):0  2  8  3

3.Swap (8,3):0  2  3  8

分析:
一道类似于模板题但又不是模板题的题目???一道较为简单的树状数组题目,但要转换问题。 CODE:
 #include <cstdio>
#include <cstring>
#include <cmath>
#include <iostream>
#include <algorithm>
using namespace std;
const int M=;
int n,a[M],b[M];
long long ans;
int read(){
char c=getchar();int ans=,f=;
while (c<''||c>''){if (c=='-') f=;c=getchar();}
while (c>=''&&c<='') ans=(ans<<)+(ans<<)+(c^),c=getchar();
if (f) return ans;return ~ans+;
}
void merge(int l,int r){
if (l==r) return;
int mid=(l+r)>>;
merge(l,mid);merge(mid+,r);
int ll=l,rr=mid+,tot=;
while (ll<=mid&&rr<=r)
if (a[ll]>a[rr]){ans+=r-rr+;b[++tot]=a[ll++];}
else b[++tot]=a[rr++];
while (ll<=mid) b[++tot]=a[ll++];
while (rr<=r) b[++tot]=a[rr++];
for (int i=l;i<=r;i++) a[i]=b[i-l+];
return;
}
int main(){
n=read();
for (int i=;i<=n;i++) a[i]=read();
merge(,n);
cout<<ans;
return ;
}
 

最新文章

  1. 虚拟文件系统(VFS)
  2. Navi.Soft30.框架.WinForm.开发手册
  3. 使用IC框架开发跨平台App的备忘录123
  4. homework08
  5. Hbase写数据,存数据,读数据的详细过程
  6. ssh 如何通过外网访问内网多台服务器
  7. 地图开发GIS的应用有哪些?
  8. 35 个 jQuery 小技巧
  9. postgresql 日志报错could not write to log file: No space left on device,could not write lock file &quot;postmaster.pid&quot;: No space left on device
  10. markdown 相关零碎知识
  11. html----常见的标签
  12. 洛谷P2329 栅栏 [SCOI2005] 搜索
  13. [转载]谈谈document.ready和window.onload的区别
  14. 本地存储之application cache和localstorage
  15. andorid 对话框
  16. MT【183】借力打力
  17. img srcset 和 sizes
  18. SQL 查询重复的行
  19. 4.6 Routing -- Rendering A Tempalte
  20. v8随心记

热门文章

  1. TI低功耗蓝牙(BLE)介绍【转】
  2. HA配置
  3. Java【并发】面试题
  4. ga统计
  5. pta作业1
  6. C语言结构体指针
  7. C语言指针变量的长度
  8. echarts的图表根据父容器大小的改变而改变(弹窗easy-ui的window窗口)
  9. Java泛型中extends和super的区别?
  10. true - (成功的)什么都不做