P1774 最接近神的人_NOI导刊2010提高(02)
P1774 最接近神的人_NOI导刊2010提高(02)
关于此题为什么可以使用求逆序对的方法来做
假设一个数\(a_i\),且前\(i-1\)个数已经成为单调增的数列。
我们要从前\(a_1\)至\(a_{i-1}\)个数的有序队列中插入\(a_i\)。
且只能使用类似冒泡排序的方法交换。
那么,插入这个数\(a_i\)需要交换的次数就是他的逆序对数。
有如下两种\(i\)的取值情况
| --- | \(i==1\) | \(i>1\) |
|---|---|---|
| 逆序对数 | \(0\) | 可以推得 |
所以这种题就是求一个逆序对的个数,就\(\mathfrak{van}\)♂了
有道云markdown真难用
#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
struct node
{
long long val;
int pos;
};
node data[600000];
bool compare(const node &a,const node &b)
{
return a.val>b.val;
}
int bit[600000];
int num;
void insert(int pos,int val)
{
while(pos<=num)
{
bit[pos]+=val;
pos+=pos&(-pos);
}
return ;
}
long long sum(int pos)
{
long long res=0;
while(pos)
{
res+=bit[pos];
pos-=pos&(-pos);
}
return res;
}
int comp[600000];
int main()
{
int n;
scanf("%d",&n);
num=n;
for(int i=1;i<=n;i++)
{
scanf("%lld",&data[i].val);
data[i].pos=i;
}
sort(data+1,data+1+n,compare);
long long now=-(1ll<<61);
int ha=0;
for(int i=1;i<=n;i++)
{
if(data[i].val!=now)
{
now=data[i].val;
ha+=1;
}
comp[data[i].pos]=ha;
}
long long ans=0;
for(int i=1;i<=n;i++)
{
ans+=sum(comp[i]-1);
insert(comp[i],1);
}
printf("%lld",ans);
}
P1774 最接近神的人_NOI导刊2010提高(02)的更多相关文章
- 洛谷——P1966 火柴排队&&P1774 最接近神的人_NOI导刊2010提高(02)
P1966 火柴排队 这题贪心显然,即将两序列中第k大的数的位置保持一致,证明略: 树状数组求逆序对啦 浅谈树状数组求逆序对及离散化的几种方式及应用 方法:从前向后每次将数插入到bit(树状数组)中, ...
- 洛谷P1774 最接近神的人_NOI导刊2010提高(02) [2017年6月计划 线段树03]
P1774 最接近神的人_NOI导刊2010提高(02) 题目描述 破解了符文之语,小FF开启了通往地下的道路.当他走到最底层时,发现正前方有一扇巨石门,门上雕刻着一幅古代人进行某种活动的图案.而石门 ...
- 洛谷P1774 最接近神的人_NOI导刊2010提高(02)(求逆序对)
To 洛谷.1774 最接近神的人 题目描述 破解了符文之语,小FF开启了通往地下的道路.当他走到最底层时,发现正前方有一扇巨石门,门上雕刻着一幅古代人进行某种活动的图案.而石门上方用古代文写着“神的 ...
- luogu P1774 最接近神的人_NOI导刊2010提高(02)
题目描述 破解了符文之语,小FF开启了通往地下的道路.当他走到最底层时,发现正前方有一扇巨石门,门上雕刻着一幅古代人进行某种活动的图案.而石门上方用古代文写着“神的殿堂”.小FF猜想里面应该就有王室的 ...
- 洛谷 P1774 最接近神的人_NOI导刊2010提高(02)
题目描述 破解了符文之语,小FF开启了通往地下的道路.当他走到最底层时,发现正前方有一扇巨石门,门上雕刻着一幅古代人进行某种活动的图案.而石门上方用古代文写着“神的殿堂”.小FF猜想里面应该就有王室的 ...
- 洛谷——P1774 最接近神的人_NOI导刊2010提高(02)
https://www.luogu.org/problem/show?pid=1774 题目描述 破解了符文之语,小FF开启了通往地下的道路.当他走到最底层时,发现正前方有一扇巨石门,门上雕刻着一幅古 ...
- 【luogu P1774 最接近神的人_NOI导刊2010提高(02)】 题解
题目链接:https://www.luogu.org/problemnew/show/P1774 归并排序求逆序对. #include <cstdio> #define livelove ...
- luoguP1774 最接近神的人_NOI导刊2010提高(02)x
P1774 最接近神的人_NOI导刊2010提高(02) 题目描述 破解了符文之语,小FF开启了通往地下的道路.当他走到最底层时,发现正前方有一扇巨石门,门上雕刻着一幅古代人进行某种活动的图案.而石门 ...
- P1774 最接近神的人_NOI导刊2010[树状数组 逆序对 离散化]
题目描述 破解了符文之语,小FF开启了通往地下的道路.当他走到最底层时,发现正前方有一扇巨石门,门上雕刻着一幅古代人进行某种活动的图案.而石门上方用古代文写着“神的殿堂”.小FF猜想里面应该就有王室的 ...
随机推荐
- 工作ui(2)
做完整个小Demo整理的一些方法和踩过的miniUI的坑,分享出来希望大家批评指正,共同进步. 1.动态创建列:尽量不要直接在html文件里创建列,动态设置在js文件里方面添加.修改等. 首先把列定义 ...
- CAD安装失败怎样卸载CAD 2015?错误提示某些产品无法安装
AUTODESK系列软件着实令人头疼,安装失败之后不能完全卸载!!!(比如maya,cad,3dsmax等).有时手动删除注册表重装之后还是会出现各种问题,每个版本的C++Runtime和.NET f ...
- 用一层for循环初始化三维数组
][][]; ; i < * * ; i++) { a[i / ][(i / ) % ][i % ] = i; printf(, (i / ) % , i % ); // printf(&quo ...
- verilog if语句
a.基本形式 1) if(表达式) 语句1: 2)if(表达式) 语句1: else 语句1 3) if(表达式1) 语句1: else if(表达式2) 语句2: else if(表达式3) ...
- php-fpm 进程在云服务器cpu分配不均匀
8核的云服务器,开了200个php-fpm进程,用top命令查看 大部分进程都在cpu 0 上跑着,导致其他cpu 负载很低,cpu分配不均匀: 使用shell 解决问题: 列出所有php-fpm ...
- Homebrew 配置
使用ruby脚本安装完成homebrew之后, 需要配置三个源以及添加一些环境变量 1. export HOMEBREW_NO_AUTO_UPDATE=true # 不自动检查更新 2. cd $(b ...
- MVC4笔记 @functions @model @using
/////@functions自定义函数////// @helper辅助方法的确可以很方便的完成辅助方法开发,不过却失去了一些弹性,例如,无法在@helper中自定义属性,只能单纯的传入参数,然后格式 ...
- 事物TransactionScope
using System.Transactions 如果修改.删除.添加一类操作涉及到多张表,那么最好用事物 trans.Complete();保证多张表的同时修改 using (Transacti ...
- Spring Boot 2.x 自定义metrics 并导出到influxdb
Step 1.添加依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactI ...
- svg的基本图形与属性【小尾巴的svg学习笔记1】
因为项目有可能用到, 所以学习了一下,做此笔记,图截自慕课网,侵删. 一.基本图形 1.矩形 x,y定义矩形的左上角坐标: width,height定义矩形的长度和宽度: rx,ry定义矩形的圆角半径 ...