博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【UOJ 51】最接近神的人
阅读量:5126 次
发布时间:2019-06-13

本文共 1130 字,大约阅读时间需要 3 分钟。

【题目描述】:

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

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

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

【输入描述】:

第一行,一个数n,表示序列中有n个数。

第二行n个数,表示给定的序列。

【输出描述】:

给定序列的最少操作次数。

【样例输入】:

65 4 2 6 3 1

【样例输出】:

11

【时间限制、数据范围及描述】:

时间:1s 空间:128M

对于50%的数据,n<=2500

对于100%的数据,n<=40000。

-maxlongint<=ai<=maxlongint

题解:emm

using namespace std;const int N=1000005;int t,n,aa[N],c[N],i,ans;struct Node{    int v;     int order;}a[N];bool cmp(Node a,Node b){    return a.v
=1;i-=lowbit(i)){ sum+=c[i]; } return sum;}int main(){ scanf("%d",&n); for(i=1;i<=n;i++){ scanf("%d",&a[i].v); a[i].order=i; } stable_sort(a+1,a+1+n,cmp); for(i=1;i<=n;i++){ aa[a[i].order]=i; } for(i=1;i<=n;i++){ update(aa[i],1); ans+=i-getsum(aa[i]); } printf("%d\n",ans); return 0;}

 

转载于:https://www.cnblogs.com/wuhu-JJJ/p/11196321.html

你可能感兴趣的文章
AD16 快速原理图封装导出
查看>>
CentOS 6 安装HBase集群教程
查看>>
linux日常管理-xarge_exec
查看>>
Cocos2d JS 之消灭星星(三) 进入游戏过渡场景
查看>>
豆瓣的账号登录及PHP api操作
查看>>
R12.2常用手册
查看>>
jQuery工具函数
查看>>
Linux 认证
查看>>
Python----查询内存地址、小数据池、编码
查看>>
jdk学习之路--jvm垃圾回收
查看>>
基于物联网实现的智能物流系统
查看>>
Page3:组合系统状态空间输入输出描述、矩阵指数函数性质[Linear System Theory]
查看>>
Shader1.0学习笔记之SetTexture
查看>>
数据结构学习-数组A[m+n]中依次存放两个线性表(a1,a2···am),(b1,b2···bn),将两个顺序表位置互换...
查看>>
《浪潮之巅》七八章笔记
查看>>
【Leetcode】Next Permutation
查看>>
网络对抗作业1
查看>>
HTML5: HTML5 服务器发送事件(Server-Sent Events)
查看>>
小程序:小程序绑定微信开放平台帐号|公众号关联小程序
查看>>
Python中下划线的5种含义
查看>>