洛谷 P1774 最接近神的人_NOI导刊2010提高(02)
来源:互联网 发布:外网无法访问8080端口 编辑:程序博客网 时间:2024/05/16 01:22
题目描述
破解了符文之语,小FF开启了通往地下的道路。当他走到最底层时,发现正前方有一扇巨石门,门上雕刻着一幅古代人进行某种活动的图案。而石门上方用古代文写着“神的殿堂”。小FF猜想里面应该就有王室的遗产了。但现在的问题是如何打开这扇门……
仔细研究后,他发现门上的图案大概是说:古代人认为只有智者才是最容易接近神明的。而最聪明的人往往通过一种仪式选拔出来。仪式大概是指,即将隐退的智者为他的候选人写下一串无序的数字,并让他们进行一种操作,即交换序列中相邻的两个元素。而用最少的交换次数使原序列变成不下降序列的人即是下一任智者。
小FF发现门上同样有着n个数字。于是他认为打开这扇门的秘诀就是找到让这个序列变成不下降序列所需要的最小次数。但小FF不会……只好又找到了你,并答应事成之后与你三七分……
输入输出格式
输入格式:第一行为一个整数n,表示序列长度
第二行为n个整数,表示序列中每个元素。
输出格式:一个整数ans,即最少操作次数。
输入输出样例
输入样例#1:
42 8 0 3
输出样例#1:
3 样例说明:开始序列为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
说明
对于30%的数据1≤n≤10^4。
对于100%的数据1≤n≤5*10^5;
-maxlongint≤A[i]≤maxlongint。
其实就是求逆序对。
#include<algorithm>#include<iostream>#include<cstdio>using namespace std;const int N=500005;int n,tp,a[N],d[N],c[N];long long ans;int lowbit(int x){return x&-x;}int query(int pos){int sum=0;while(pos>0){sum+=c[pos];pos-=lowbit(pos);}return sum;}void add(int pos){while(pos<=n){c[pos]++;pos+=lowbit(pos);}}int main(){scanf("%d",&n);for(int i=1;i<=n;i++){scanf("%d",&a[i]);d[++tp]=a[i];}sort(d+1,d+tp+1);tp=unique(d+1,d+tp+1)-d-1;for(int i=1;i<=n;i++){ans+=query(n)-query(lower_bound(d+1,d+tp+1,a[i])-d);add(lower_bound(d+1,d+tp+1,a[i])-d);}printf("%lld\n",ans);return 0;}
0 0
- 洛谷 P1774 最接近神的人_NOI导刊2010提高(02)
- 洛谷P1774 最接近神的人_NOI导刊2010提高(树状数组)
- 洛谷 P1776 宝物筛选_NOI导刊2010提高(02)
- 洛谷 P1815 蠕虫游戏 _NOI导刊2011提高(02)
- 洛谷 P1801 黑匣子_NOI导刊2010提高(06)
- 洛谷 P1801 黑匣子_NOI导刊2010提高(06)
- 洛谷 P1801 黑匣子_NOI导刊2010提高(06)
- 洛谷 P1801 黑匣子_NOI导刊2010提高(06)
- 黑匣子_NOI导刊2010提高(06) 洛谷p1801
- 洛谷 P1807 最长路_NOI导刊2010提高(07)
- 洛谷 P1799 数列_NOI导刊2010提高(06)
- 洛谷P1801 黑匣子_NOI导刊2010提高(06)
- 洛谷P1801 黑匣子_NOI导刊2010提高(06)
- 洛谷 P1796 汤姆斯的天堂梦_NOI导刊2010提高(05)
- 洛谷 P1808 单词分类_NOI导刊2011提高(01)
- 洛谷 P1844 阅览室_NOI导刊2011提高(12)
- LUOGUP1801 黑匣子_NOI导刊2010提高(06)
- |洛谷|NOI导刊|堆|黑匣子_NOI导刊2010提高(06)
- 资料 文件上传 图片预览 功能
- Java GUI基本知识点
- Android中的AlertDialog使用示例五(自定义对话框)
- 使用plsql导出oracle空表
- Linux关于gcc
- 洛谷 P1774 最接近神的人_NOI导刊2010提高(02)
- FIR数字滤波器设计窗函数法MATLAB仿真(Hamming)
- qut1362麻烦的转盘(概率dp或递推)
- 实用网站归纳
- C++ map 学习
- WPF stackpanel在dockpanel中的位置
- MFC多线程 —— 线程同步
- Leetcode 264. Ugly Number II[medium]
- 6个有趣的LINUX命令