https://codeforces.com/gym/102082

题意:

  给一个数组大小不超过1e5,每个数的值也是1e5以内,可以交换相邻两个数,求保证它呈现一个非递减再非递增的趋势的最小交换次数。

题解:
对每个数来说,只有两种情况,要么参与非递减部分要么参与非递增部分,对于前者它要移的次数就是在它之前与他构成的逆序对数,对于后者它要移的次数就是在它之后与他构成的逆序对数,那我们取较小的加入到答案就做完了。
#define bug(x,y) cout<<"i="<<x<<": "<<y<<endl
#define IO std::ios::sync_with_stdio(0);
#include <bits/stdc++.h>
#define itor ::iterator
using namespace  std;
typedef long long ll;
typedef pair<ll,ll>P;
#define pb push_back
#define se second
#define fi first
#define rs o*2+1
#define ls o*2
const int N=1e5+5;
int n;
int c[N];
int low(int x){return x&(-x);
}
void add(int x,int y){while(x<N){   c[x]+=y;x+=low(x);}
}
int cal(int x){int res=0;while(x){res+=c[x];x-=low(x);}return res;
}
vector<int>v[N];
int main(){scanf("%d",&n);ll ans=0;for(int i=1;i<=n;i++){int x;scanf("%d",&x);v[x].pb(i);add(i,1);}for(int i=1;i<N;i++){if(v[i].empty())continue;for(int j=0;j<v[i].size();j++){int x=v[i][j];add(x,-1);n--;}for(int j=0;j<v[i].size();j++){  int x=v[i][j];ll res=min(cal(x-1),n-cal(x));//bug(i,res);ans+=res;}}printf("%lld\n",ans);
}
/*
7
3 1 4 1 5 9 2
*/

转载于:https://www.cnblogs.com/ccsu-kid/p/10599346.html

Asia Yokohama Regional Contest 2018 G题 What Goes Up Must Come Down(树状数组求逆序对)相关推荐

  1. [USACO17FEB] Why Did the Cow Cross the Road I P (树状数组求逆序对 易错题)

    题目大意:给你两个序列,可以序列进行若干次旋转操作(两个都可以转),对两个序列相同权值的地方连边,求最少的交点数 记录某个值在第一个序列的位置,再记录第二个序列中某个值 在第一个序列出现的位置 ,求逆 ...

  2. Asia Yokohama Regional Contest 2018 K题 - Sixth Sense(思维加贪心加二分)

    https://codeforces.com/gym/102082 题意 两个人玩n轮游戏,每次两个人各取一个数,并且已知对手的取数顺序,如果你取的数比他大就算赢一轮,求能赢最多轮次的取法,如果有多种 ...

  3. 蓝桥杯2014届试题9题 小朋友排队(树状数组+类逆序对)

    题目: 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 n 个小朋友站成一排.现在要把他们按身高从低到高的顺序排列,但是每次只能交换位置相邻的两个小朋友. 每个小朋友都有一个不高兴的 ...

  4. Codeforces Gym 101142 G Gangsters in Central City (lca+dfs序+树状数组+set)

    题意: 树的根节点为水源,编号为 1 .给定编号为 2, 3, 4, -, n 的点的父节点.已知只有叶子节点都是房子. 有 q 个操作,每个操作可以是下列两者之一: + v ,表示编号为 v 的房子 ...

  5. 2018-2019 ACM-ICPC, Asia Shenyang Regional Contest E. The Kouga Ninja Scrolls 不容易的线段树 切比雪夫距离

    题目链接:http://codeforces.com/gym/101955/problem/E 题意: 二维坐标上给你1e5个人,并且给你这些人分别所属的阵营,现在你有三种操作. 1 k x y: 表 ...

  6. ACM-ICPC 2018 徐州赛区网络预赛 I. query 树状数组

    I. query 题目链接: Problem Description Given a permutation \(p\) of length \(n\), you are asked to answe ...

  7. 2018蓝桥杯模拟赛·青出于蓝而胜于蓝 DFS序+树状数组

    武当派一共有 nnn 人,门派内 nnn 人按照武功高低进行排名,武功最高的人排名第 111,次高的人排名第 222,... 武功最低的人排名第 nnn.现在我们用武功的排名来给每个人标号,除了祖师爷 ...

  8. 2018 ICPC Asia Jakarta Regional Contest

    2018 ICPC Asia Jakarta Regional Contest 题号 题目 知识点 难度 A Edit Distance B Rotating Gear C Smart Thief D ...

  9. The 2018 ACM-ICPC Asia Qingdao Regional Contest

    The 2018 ACM-ICPC Asia Qingdao Regional Contest 青岛总体来说只会3题 C #include<bits/stdc++.h> using nam ...

最新文章

  1. ES6-const注意
  2. 【新手教程】如何向App Store提交应用
  3. 归并排序执行次数_归并排序过程、时间复杂度分析及改进
  4. matlab 蜂窝网格,blender怎么制作蜂巢网格 蜂窝式网格画法
  5. 【NLP】使用BERT完成NLP任务
  6. matplotlib,numpy自己动手安装
  7. 自动化测试框架 2019_2019年用于自动化的5个最佳Java测试框架
  8. jboss eap 7.0_是时候抛弃Java 7 – JBoss EAP 6.4了!
  9. 实践中学到的最重要的机器学习经验!
  10. python萤火虫算法_FA:萤火虫算法的测试及Python实现
  11. 「最有用」的特殊大数据:一文看懂文本信息系统的概念框架及功能
  12. 最优秀的5个Linux文本编辑器
  13. 使用C#,轻松发邮件之QQ邮箱
  14. 飞行堡垒FN+F5风扇调节失灵怎么办? 一文教你完美解决此问题
  15. Go语言十大排序算法
  16. win的反义词_初中阶段常用的133个英语单词反义词!
  17. @scheduled 定时任务执行一段时间后莫名其妙停止 Ftp假死
  18. java实验 声明银行账户类__Java实验13 银行账户存取款业务
  19. [转载] 古稀之年被判无期,84 岁再成亿万富翁,一代商业传奇落幕!
  20. java游戏 天剑传承,《天剑传承》之无双迷宫攻略

热门文章

  1. Linux系统文件编程(1)
  2. html优美界面左侧下拉,一组时尚的侧边栏菜单和下拉列表UI设计
  3. mac photoshop_我讨厌Photoshop…
  4. qt按钮禁用和激活禁用_为什么试探法只是经验法则:禁用按钮的情况
  5. python day08
  6. 给div拼接html 拼接字符串
  7. Android通过透明度设置背景变暗
  8. Tomcat乱码解决
  9. oracle的环境配置-基本配置
  10. 教育行业的互联网焦虑症