小朋友排队

news2025/5/17 9:52:38

[蓝桥杯 2014 省 B] 小朋友排队

题目描述

n n n 个小朋友站成一排。现在要把他们按身高从低到高的顺序排列,但是每次只能交换位置相邻的两个小朋友。

每个小朋友都有一个不高兴的程度。开始的时候,所有小朋友的不高兴程度都是 0 0 0

如果某个小朋友第一次被要求交换,则他的不高兴程度增加 1 1 1,如果第二次要求他交换,则他的不高兴程度增加 2 2 2(即不高兴程度为 3 3 3),依次类推。当要求某个小朋友第 k k k 次交换时,他的不高兴程度增加 k k k

请问,要让所有小朋友按从低到高排队,他们的不高兴程度之和最小是多少。

如果有两个小朋友身高一样,则他们谁站在谁前面是没有关系的。

输入格式

输入的第一行包含一个整数 n n n,表示小朋友的个数。

第二行包含 n n n 个整数 H 1 , H 2 ⋯ H n H_1,H_2 \cdots H_n H1,H2Hn,分别表示每个小朋友的身高。

输出格式

输出一行,包含一个整数,表示小朋友的不高兴程度和的最小值。

样例 #1

样例输入 #1

3
3 2 1

样例输出 #1

9

提示

【样例说明】

首先交换身高为 3 3 3 2 2 2 的小朋友,再交换身高为 3 3 3 1 1 1 的小朋友,再交换身高为 2 2 2 1 1 1 的小朋友,每个小朋友的不高兴程度都是 3 3 3,总和为 9 9 9

【数据规模与约定】

对于 10 % 10\% 10% 的数据, 1 ≤ n ≤ 10 1 \le n \le 10 1n10

对于 30 % 30\% 30% 的数据, 1 ≤ n ≤ 1000 1 \le n \le 1000 1n1000

对于 50 % 50\% 50% 的数据, 1 ≤ n ≤ 10000 1 \le n \le 10000 1n10000

对于 100 % 100\% 100% 的数据, 1 ≤ n ≤ 100000 1 \le n \le 100000 1n100000 0 ≤ H i ≤ 1000000 0 \le H_i \le 1000000 0Hi1000000

时限 1 秒, 256M。蓝桥杯 2014 年第五届省赛

解析

在这里插入图片描述

#include<bits/stdc++.h>
using namespace std;

long long n,a[500005],b[500005],t[500005],cnt[500005],ans;
map<long long,int>m;
long long lowbit(long long x)
{
    return x&(-x);
}
long long getsum(long long x)
{
    long long sum=0;
    while(x)
    {
        sum+=t[x];
        x-=lowbit(x);
    }
    return sum;
}
void update(long long x,long long y)
{
    while(x<=500000)
    {
        t[x]+=y;
        x+=lowbit(x);
    }
}
int main()
{
    scanf("%lld",&n);
    for (int i = 1; i <= n; i++)
    {
        scanf("%lld",&a[i]);
        b[i]=a[i];
    }
    sort(b+1,b+n+1);
    for(int i=1;i<=n;i++)
    {
        m[b[i]]=i;
    }
    for(int i=1;i<=n;i++)
    {
        a[i]=m[a[i]];
    }
    for (int i = 1; i <= n; i++)
    {
        update(a[i]+1,1);//数字可以是0,所以要加1
        cnt[i]+=(i-getsum(a[i]+1)); //统计前面比它大的数字
    }
    memset(t,0,sizeof(t));
    for (int i = n; i >= 1; i--)
    {
        update(a[i]+1,1);
        cnt[i]+=getsum(a[i]); //统计后面比它小的数字
    }
    for(int i=1;i<=n;i++)
    {
    	ans+=(cnt[i]+1)*cnt[i]/2;//算出这个数字的代价
    }
    printf("%lld",ans);
    return 0;
}

来源

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/457434.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python 学习曲线 从 Python 新手到 Pro

Python 学习曲线 从 Python新手到 Pro 使用代码片段介绍&#xff1a; Python 是世界上最通用和使用最广泛的编程语言之一&#xff0c;以其简单性、可读性和多功能性而闻名。 在本文中&#xff0c;我们将探讨一系列示例场景&#xff0c;其中代码由具有三个不同专业知识水平的程序…

文件系统和动静态库

目录 再识文件属性 查看文件属性的原理 初识inode 了解磁盘 什么是磁盘 磁盘的结构 磁盘的存储结构 CHS寻址 磁盘的逻辑结构 使用LBA地址的意义 理解文件系统 页框和页帧 分治思想管理 Linux ext2文件系统 软硬链接 软链接 硬链接 文件的三个时间 动静态库 …

java运行python脚本,待完善版

参考资料: windows下调用CMD运行方式 兼容linux/windows,同步异步方式 指定特殊运行环境的运行(如:anaconda运行环境) 整合以上三种方式终极版源码 相关内容: 调用python脚本传参说明 如果不传参数,python脚本可以随意写,比如:

【课程介绍篇】C/C++后台开发岗位技能知识树

1 C/C后台开发岗位技能知识树 2 Linux C/C后台架构开发 成长体系课程 3 C技术历史更新 https://www.0voice.com/uiwebsite/html/courses/

《UVM实战》学习笔记——第七章 UVM中的寄存器模型2——期望值/镜像值、自动/显示预测、操作方式

文章目录 前言一、寄存器模型对DUT的模拟1.1 期望值和镜像值1.2 常见操作对期望值和镜像值的影响 二、prediction分类2.1 自动预测2.2 显式预测 三、访问寄存器方式四、mem和reg的联系和差别五、内建built_in sequence5.1 寄存器模型内建序列5.2 存储器模型内建序列5.3 禁止域名…

安装APP时弹窗未知风险未知开发者,还能下载吗?

随着移动互联网的不断普及&#xff0c;人们的日常生活已与手机密不可分。根据相关研究&#xff0c;在使用手机时&#xff0c;人们90%以上的时间都花在某些应用程序上&#xff0c;巨大的需求使得各种各样的APP被开发出来。然而人们在使用APP时必须更加注意其是否来源可信企业&am…

数据结构与算法基础-学习-21-查找之平衡二叉树(AVL树)

目录 一、个人理解 二、最小失衡子树 三、平衡调整的四种类型 1、LL型 2、RR型 3、LR型 4、RL型 四、如何平衡调整 1、LL型调整 2、LR型调整 五、宏定义 六、结构体类型定义 1、AVL树结点类型 2、AVL树类型 3、AVL树结点搜索路径类型 七、函数定义 1、初始化AV…

基于CMS项目的JDBC的实战

基于CMS项目的JDBC的实战 使用的Javase技术&#xff0c;进行控制台输出的客户管理系统&#xff08;CMS&#xff09;&#xff0c;主要功能包含登录&#xff0c;注册、客户信息的展示&#xff0c;客户信息的更新&#xff0c;客户信息添加删除客户、退出系统。 设计创建数据库 …

PEX高效批量网络装机

目录 一、部署PXE远程安装服务 1&#xff09;PXE概述 若要搭建PEX网络体系&#xff0c;必须满足以下几个前提条件 2&#xff09;搭建PXE远程安装服务器 ①安装并启用 TFTP 服务 ②安装并启用 DHCP 服务 ​编辑 ③准备 Linux 内核、初始化镜像文件 ④准备 PXE 引导程序 …

CUDA下载与对应版本查询

文章目录 1 算力&#xff0c;CUDA Driver Version&#xff0c;CUDA Runtime Version2 显卡型号3 实操4 镜像 1 算力&#xff0c;CUDA Driver Version&#xff0c;CUDA Runtime Version 比如说我们进入pytorch官网中&#xff0c;点击下载&#xff0c;如何找到适合自己的CUDA版本…

SCAU 统计学 实验5

8.14 总体平均值&#xff08;μ&#xff09;&#xff1a;7.0 cm 总体方差&#xff08;σ&#xff09;&#xff1a;0.03 cm 样本平均值&#xff08;x̄&#xff09;&#xff1a;6.97 cm 样本方差&#xff08;s&#xff09;&#xff1a;0.0375 cm 样本大小&#xff08;n&#xff…

复旦MOSS大模型开源了!Github和Hugging Face同时上线

来源&#xff1a;量子位 复旦大模型MOSS&#xff0c;正式开源了&#xff01; 作为国内首个开放测试的类ChatGPT产品&#xff0c;MOSS开源地址一放出&#xff0c;又冲上知乎热搜&#xff1a; 从官网介绍来看&#xff0c;MOSS是一个拥有160亿参数的开源对话语言模型。 它由约7…

EventLog Analyzer:高效保护网络安全的强大工具

网络安全是当今数字化世界中最为重要的话题之一。随着越来越多的组织、企业和个人将其业务转移到互联网上&#xff0c;网络安全问题变得越来越严峻。针对这个问题&#xff0c;EventLog Analyzer提供了一个有效的解决方案&#xff0c;让网络管理员可以更好地监控和保护其网络环境…

【虚拟仿真】Unity3D中实现UI的单击、双击、按压、拖动的不同状态判断

推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享简书地址我的个人博客 大家好&#xff0c;我是佛系工程师☆恬静的小魔龙☆&#xff0c;不定时更新Unity开发技巧&#xff0c;觉得有用记得一键三连哦。 一、前言 之前写了一篇在Unity中鼠标的单击、双击、拖动的文章&#xff…

Improving Language Understanding by Generative Pre-Training 论文阅读

论文题目&#xff1a;通过生成式预训练提高语言理解能力 GPT的全称&#xff1a;Generative Pre-trained Transformer。 Generative是指GPT可以利用先前的输入文本来生成新的文本。GPT的生成过程是基于统计的&#xff0c;它可以预测输入序列的下一个单词或字符&#xff0c;从而生…

春招,进阿里了....

个人背景是东北某 985 科班本硕&#xff0c;做的 测试开发&#xff0c;有两个自己写的小项目。下面是一些印象比较深刻的面试题 阿里一面 什么是软件测试&#xff1f; 软件测试过程中会面向哪些群体&#xff1f; 开发一个软件都要经过哪些阶段&#xff1f; 什么是黑盒测试&…

一块钱看Android Debug: avc denied 已存在的目录不能访问

某三方应用&#xff0c;使用了USB摄像头&#xff0c;启动应用后功能不能使用&#xff0c;看log有如下错误&#xff0c; denied后面{}里的是要执行的动作,比如append,open,execmod,link等等 scontext指的是域,对应的是te文件 上面报错这条对应te文件是untrusted_app.te, scontex…

如何将 WhatsApp 聊天添加到您的网站

WhatsApp是全球最受欢迎的消息传递应用程序。平台上有超过 2 亿活跃用户与朋友、家人和企业进行交流。对于企业而言&#xff0c;WhatsApp 是与客户进行个人、可访问和非正式对话的理想渠道。 要将 WhatsApp 作为渠道引入您的客户旅程&#xff0c;第一步是将 WhatsApp 聊天按钮…

2023软件测试工具大全(自动化、接口、性能、安全、测试管理)

目录 前言 一、自动化测试工具 Selenium Appium TestComplete 二、接口测试工具 Postman SoapUI JMeter 三、性能测试工具 LoadRunner JMeter Gatling 四、安全测试工具 Burp Suite OWASP ZAP Nmap 五、测试管理工具 TestRail JIRA TestLink 总结 前言 …

【JavaScript】this理解总结

概念 this是函数运行时所在的对象。 使用场合 1.全局环境 全局环境使用this&#xff0c;this指向顶层对象。 2.构造函数 构造函数体里面的this&#xff0c;this指向是构造出来的实例对象。 3.对象的方法 ● 如果对象的方法里面包含this&#xff0c;this的指向就是方法运…