跳转链接

题目描述

给定一个序列, 求出将此序列变换为单调递增单调递减 或者先增后减

样例1

输入
7
3 1 4 1 5 9 2
输出
3

样例2

输入
9
10 4 6 3 15 9 1 1 12
输出
8

分析

本题相当于是有一个峰值, 峰值两边的都单调递减

我们可以用树状数组求出对于所有的数字处于峰值左边或者右边所需要的交换次数

对于这两种情况取一个最小值即可

CODE

#include <iostream>
#define lowbit(i) i & -i
#define mset(a) for(int i = 0; i <= px; i ++ ) a[i] = 0 using namespace std; const int N = 1e5 + 10; int n, px;
int a[N], tr[N], cnt[N]; void add(int x) {
for(int i = x; i <= px; i += lowbit(i) ) tr[i] ++;
} int sum(int x) {
int ans = 0;
for(int i = x; i; i -= lowbit(i)) ans += tr[i];
return ans;
} int main() {
ios::sync_with_stdio(false), cin.tie(0);
cin >> n;
for(int i = 1; i <= n; i ++ ) {
cin >> a[i];
px = max(a[i], px);
} for(int i = 1; i <= n; i ++ ) {
cnt[i] = sum(px) - sum(a[i]);
add(a[i]);
}
mset(tr);
for(int i = n; i; i -- ) {
cnt[i] = min(sum(px) - sum(a[i]), cnt[i]);
add(a[i]);
}
long long ans = 0;
for(int i = 1; i <= n; i ++ ) ans += cnt[i];
cout << ans << endl;
return 0;
}

随机推荐

  1. Causal Intervention for Weakly-Supervised Semantic Segmentation

    目录 概 主要内容 普通的弱监督语义分割 因果模型 训练流程 代码 Zhang D., Zhang H., Tang J., Hua X. and Sun Q. Causal Intervention ...

  2. 5分钟搭建wordpress个人博客网站——宝塔傻瓜式部署,无坑系列,附赠主题和md插件[2021-12-31]

    一.前言 自从买了服务器,小编已经马不停蹄的学了两天服务搭建的知识,问了很多大佬,快速搭建自己的博客网站.有四种方式,我在这里全部分享给大家.自己已经搭建好,欢迎大家过来看一下,给你提供个思路哈! 小 ...

  3. 美和易思 MOOT去鼠标检测,快进,倍速,自动下一章

    F12 放到 console 直接运行即可 或者油猴添加新脚本 核心去除网页绑定焦点事件代码: if (!-[1,] && !window.XMLHttpRequest || navi ...

  4. 编写Java程序,车站只剩 50 张从武汉到北京的车票,现有 3 个窗口售卖,用程序模拟售票的过程,使用Runnable解决线程安全问题

    查看本章节 查看作业目录 需求说明: 车站只剩 50 张从武汉到北京的车票,现有 3 个窗口售卖,用程序模拟售票的过程,要求使用同步方法保证售票过程中票数的正确性 实现思路: 创建 Java 项目,在 ...

  5. visual studio code 修改工具栏风格

    用windows版vscode的同学们是否发现它的工具栏是白色的跟整个界面看起来不太搭调,如下图: 其实要改变标题栏颜色也很简单,点击:文件> 首选项>设置 将 "window. ...

  6. 《python深度学习》(高清、源码).PDF,免费无需任何解压密码

    链接:https://pan.baidu.com/s/1zx20XEpPBJeBG2e1IGMc6g 提取码:wub3

  7. linux安全篇:禁止频繁访问的ip访问nginx

    实验环境 版本:redhat6.5ip:172.16.1.100,172.16.10软件:nginx 172.16.1.10部署nginx [root@localhost tools]# lsngin ...

  8. vue - public 引入 <script>报错 Uncaught SyntaxError: Unexpected token '<'

    1.现象 原本我是直接在母版引入 <script type="application/javascript" src="static/config.js" ...

  9. vue爬坑之路(axios 封装篇)

    第一步还是先下载axios cnpm install axios -S第二步建立一个htttp.js import axios from 'axios'; import { Message } fro ...

  10. testng.xml 执行多个测试用例

    1.在工程名字上点击右键,点击[New]-->[File] 2.在弹出的[New File]对话框中的[File name]输入[testng.xml],点击[Finish]即创建了一个test ...