2024蓝桥杯每日一题(树状数组2)

备战2024年蓝桥杯 -- 每日一题
Python大学A组

        试题一:数星星
        试题二:小朋友排队
        试题三:逆序对数量
        试题四:火柴排队


试题一:数星星

【题目描述】

        天空中有一些星星,这些星星都在不同的位置,每个星星有个坐标。如果一个星星的左下方(包含正左和正下)有 k 颗星星,就说这颗星星是 k 级的。

        

        例如,上图中星星 5 是 3 级的(1,2,4 在它左下),星星 2,4是 1 级的。例图中有 1 个 0 级,2 个 1 级,1 个 2 级,1 个 3 级的星星。给定星星的位置,输出各级星星的数目。

        换句话说,给定 N 个点,定义每个点的等级是在该点左下方(含正左、正下)的点的数目,试统计每个等级有多少个点。

【输入格式】

        第一行一个整数 N,表示星星的数目;

        接下来 N 行给出每颗星星的坐标,坐标用两个整数 x,y 表示;

        不会有星星重叠。星星按 y 坐标增序给出,y 坐标相同的按 x 坐标增序给出。

【输出格式】

        N 行,每行一个整数,分别是 0 级,1 级,2 级,……,N−1 级的星星的数目。

【数据范围】

        1≤N≤15000,
        0≤x,y≤32000

【输入样例】

5
1 1
5 1
7 1
3 3
5 5

【输出样例】

1
2
1
1
0

【解题思路】

        输入数据是按y值从小到大排序的,这个星星是第几级的计算方法就是前面有多少个x值比它小的。因为x不是小到大的输入,所以查询后得就得更新答案。

【Python程序代码】

n = int(input())
N = 52000
res = [0]*(N)
ans = [0]*(n+10)
def lowbit(x):return x&-x
def add(x,k):while x<=N:res[x]+=kx+=lowbit(x)
def quary(x):ans1 = 0while x:ans1 += res[x]x-=lowbit(x)return ans1
for i in range(n):x,y = map(int,input().split())x+=1ans[quary(x)] += 1add(x, 1)
for i in range(n):print(ans[i])

试题二:小朋友排队

【题目描述】

        n 个小朋友站成一排。现在要把他们按身高从低到高的顺序排列,但是每次只能交换位置相邻的两个小朋友。每个小朋友都有一个不高兴的程度。开始的时候,所有小朋友的不高兴程度都是 00。如果某个小朋友第一次被要求交换,则他的不高兴程度增加 1,如果第二次要求他交换,则他的不高兴程度增加 2(即不高兴程度为 3),依次类推。当要求某个小朋友第 k 次交换时,他的不高兴程度增加 k。请问,要让所有小朋友按从低到高排队,他们的不高兴程度之和最小是多少。如果有两个小朋友身高一样,则他们谁站在谁前面是没有关系的。

【输入格式】

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

        第二行包含 n 个整数 H1,H2,…,Hn分别表示每个小朋友的身高。

【输出格式】

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

【数据范围】

        1≤n≤100000,
        0≤Hi≤1000000

【输入样例】

3
3 2 1

【输出样例】

9

【解题思路】

        就是求每个小朋友与前面和后面的朋友构成的逆序对数量。

【Python程序代码】

n = int(input())
a = list(map(int,input().split()))
b = [0]*(n+10)
N = 2000000
s = [0]*N
def lowbit(x):return x&-x
def add(x,k):while x<=N:s[x]+=kx+=lowbit(x)
def quary(x):tep1 = 0while x:tep1 += s[x]x -= lowbit(x)return tep1
for i in range(n):a[i]+=1add(a[i],1)b[i+1] += i+1 - quary(a[i])
s = [0]*N
for i in range(n-1,-1,-1):add(a[i],1)b[i+1] +=quary(a[i]-1)
res = 0
for i in range(1,n+1):res += (b[i]+1)*b[i]//2
print(res)

试题三: 逆序对数量

【题目描述】

        给定一个长度为 n 的整数数列,请你计算数列中的逆序对的数量。逆序对的定义如下:对于数列的第 i 个和第 j 个元素,如果满足 i<j且 a[i]>a[j],则其为一个逆序对;否则不是。

【输入格式】

        第一行包含整数 n,表示数列的长度。

        第二行包含 n 个整数,表示整个数列。

【输出格式】

        输出一个整数,表示逆序对的个数。

【数据范围】

        1≤n≤100000,
        数列中的元素的取值范围 [1,109]。

【输入样例】

6
2 3 4 5 6 1

【输出样例】

5

【解题思路】

        先离散化处理一下,模板题

【Python程序代码】

from bisect import *
n = int(input())
a = list(map(int, input().split()))
N = 200000
s = [0]*(N+10)
def lisan(a):b = sorted(list(set(a)))for i in range(len(a)):a[i] = bisect_left(b,a[i])+1return a
a = lisan(a)
def lowbit(x):return x&-x
def add(x,k):while x<=N:s[x]+=kx+=lowbit(x)
def quary(x):res = 0while x:res += s[x]x-=lowbit(x)return res
ans = 0
for i in range(n):ans += i - quary(a[i])add(a[i],1)
print(ans)

试题四:火柴排队

【题目描述】

        涵涵有两盒火柴,每盒装有 n 根火柴,每根火柴都有一个高度。 现在将每盒中的火柴各自排成一列, 同一列火柴的高度互不相同, 两列火柴之间的距离定义为:∑(ai​−bi​)2。其中ai​ 表示第一列火柴中第 i 个火柴的高度,bi​ 表示第二列火柴中第 i 个火柴的高度。每列火柴中相邻两根火柴的位置都可以交换,请你通过交换使得两列火柴之间的距离最小。请问得到这个最小的距离,最少需要交换多少次?如果这个数字太大,请输出这个最小交换次数对 10⁸−3 取模的结果。

【输入格式】

        共三行,第一行包含一个整数 n,表示每盒中火柴的数目。

        第二行有 n 个整数,每两个整数之间用一个空格隔开,表示第一列火柴的高度。

        第三行有 n 个整数,每两个整数之间用一个空格隔开,表示第二列火柴的高度。

【输出格式】

        一个整数,表示最少交换次数对 10⁸−3取模的结果。

【输入样例】

4
2 3 1 4
3 2 1 4

【输出样例】

1

【解题思路】

        顺序积之和>=乱序积之和>=逆序积之和,也就是把a和b数组都交换成大对应大,即大小等次是一样的。最少交换次数可以转化成,求一个映射数组的逆序对数量,先改造一下a,b数组,数组内容变成[值,索引],然后将a和b按值大小进行排序,映射数组为c[a.idx]=b.idx。然后用树状数组求逆序对。

【Python程序代码】

n = int(input())
a = list(map(int, input().split()))
b = list(map(int, input().split()))
na,nb = [],[]
for i in range(n):na.append([a[i],i+1])nb.append([b[i],i+1])
na.sort(); nb.sort()
p,N = 10**8-3,10**5+10
c,tr = [0]*(N+10),[0]*(N+10)
for i in range(n):c[na[i][1]]=nb[i][1]
def lowbit(x):return x&-x
def add(x,k):while x<=N:tr[x] = (tr[x]+k)%px+=lowbit(x)
def quary(x):res = 0while x:res = (res + tr[x])%px-=lowbit(x)return res
ans = 0
for i in range(n,0,-1):ans = (ans + quary(c[i]-1))%padd(c[i],1)
print(ans)

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

3.18_C++_day6_作业

作业要求&#xff1a; 程序代码&#xff1a; #include <iostream>using namespace std;class Animal { private:string name;string color;int *age; public://无参构造函数Animal(){cout << "Animal::无参构造函数" << endl;}//有参构造函数Anim…

【计算机】——51单片机——持续更新

单片机是一种内部包含CPU、存储器和输入/输出接口等电路的集成电路&#xff08;IC芯片&#xff09; 单片机是单片微型计算机&#xff08;Single Chip Microcomputer&#xff09;的简称&#xff0c;用于控制领域&#xff0c;所以又称为微型控制器&#xff08;Microcontroller U…

Python零基础---爬虫技术相关

python 爬虫技术&#xff0c;关于数据相关的拆解&#xff1a; 1.对页面结构的拆解 2.数据包的分析&#xff08;是否加密了参数&#xff09;&#xff08;Md5 aes&#xff09;难易程度&#xff0c;价格 3.对接客户(433,334) # 数据库 CSV 4.结单&#xff08;发一部分数据&a…

服务器运行一段时间后

自己记录一下。 一、查看目录占用情况 df -h 命令查看磁盘空间 du -ah --max-depth=1 / 查看根目录下各个文件占用情况 二、mysql日志清空 这个日志是可以清空的 echo > /usr/local/mysql/data/syzl-db2.log #将文件清空 说明: 这个文件这么大是因为,开启 …

Leetcode热题100:图论

Leetcode 200. 岛屿数量 深度优先搜索法&#xff1a; 对于这道题来说&#xff0c;是一个非常经典的图的问题&#xff0c;我们可以先从宏观上面来看问题&#xff0c;也就是说在不想具体算法的前提下&#xff0c;简单的说出如何找到所有的岛屿呢&#xff1f; 如图中所示&#x…

初识React(一)从井字棋游戏开始

写在前面&#xff1a; 磨磨唧唧了好久终于下定决心开始学react&#xff0c;刚刚接触感觉有点无从下脚...新的语法新的格式跟vue就像两种物种...倒是很好奇路由和store是怎么实现的了~v~&#xff0c;一点一点来吧&#xff01;&#xff01;&#xff01; (一)创建项目 使用vite…

FreeRtos学习笔记(12)systemView 分析任务调度情况

FreeRtos学习笔记&#xff08;12&#xff09;systemView 分析任务调度情况 使用stm32f429 freertosV10.5.1 systemView 3.5 keil AC5 systemView 移植 从官网下载 systemView 软件 将下面文件添加到工程中 freertos 修改 systemView 需要 FreeRTOSConfig.h 开启如下宏, …

Affinity Photo:像素大师,影像重塑者 mac/win版

在数字图像处理领域&#xff0c;Affinity Photo已经崭露头角&#xff0c;成为许多专业摄影师和图像设计师的首 选工具。这款软件不仅具备丰富的功能和强大的性能&#xff0c;还提供了直观易用的操作界面&#xff0c;让用户能够轻松实现高质量的图像处理。 Affinity Photo软件获…

如何在iOS系统抓取log

前言&#xff1a;因为作者目前工作领域和苹果智能家居有关&#xff0c;然后发现一些bug其实是apple sdk原生code的问题&#xff0c;所以需要给apple提radar单&#xff0c;就需要抓ios端Log充当证据给apple看&#xff0c;其实ios抓log非常简单&#xff0c;大家感兴趣可以学习下哦…

众邦科技CRMEB商城商业版任意文件写入getshell 0day

代码审计 接口&#xff1a;/adminapi/system/crud 处理的代码如下 public function save(SystemCrudDataService $service, $id 0){$data $this->request->postMore([[pid, 0],//上级菜单id[menuName, ],//菜单名[tableName, ],//表名[modelName, ],//模块名称[table…

NAT---网络地址转换技术

Network Address Translation 1、起源&#xff1a;ip地址不够用 2、作用&#xff1a;让私网地址映射成公网地址&#xff0c;进而访问网络。 3、私网Ip地址的范围&#xff1a; A类&#xff1a;10.0.0.0-10.255.255.255 B类&#xff1a;172.16.0.0-172.31.255.255 C类&…

论文精读 | 2024 [ICLR] TimeMixer: 可分解多尺度融合的时间序列预测

论文标题&#xff1a;TimeMixer: Decomposable Multiscale Mixing for Time Series Forecasting 作者&#xff1a;Shiyu Wang&#xff08;王世宇&#xff09;, Haixu Wu&#xff08;吴海旭&#xff09;, Xiaoming Shi, Tengge Hu, Huakun Luo, Lintao Ma, James Y. Zhang, and…

【进阶五】Python实现SDVRP(需求拆分)常见求解算法——禁忌搜索+模拟退火算法(TS+SA)

基于python语言&#xff0c;采用经典禁忌搜索&#xff08;TS&#xff09;模拟退火&#xff08;SA&#xff09;对 需求拆分车辆路径规划问题&#xff08;SDVRP&#xff09; 进行求解。 目录 往期优质资源1. 适用场景2. 代码调整3. 求解结果3.1 TS3.2 SA 4. 代码片段参考 往期优质…

MySQL索引(图文并茂)

目录 一、索引的概念 二、索引的作用 三、创建索引的原则依据 四、索引的分类和创建 1、索引的分类 2、索引的创建 2.1 普通索引 2.1.1 直接创建索引 2.1.2 修改表方式创建 2.1.3 创建表的时候指定索引 2.2 唯一索引 2.2.1 直接创建唯一索引 2.2.2 修改表方式创建 …

C 多维数组

C 语言支持多维数组。多维数组声明的一般形式如下&#xff1a; type name[size1][size2]...[sizeN];例如&#xff0c;下面的声明创建了一个三维 5 . 10 . 4 整型数组&#xff1a; int threedim[5][10][4];二维数组 多维数组最简单的形式是二维数组。一个二维数组&#xff0c…

每秒批量插入10000条数据到MySQL中,资源消耗(带宽、IOPS)有多少?

文章目录 &#x1f50a;博主介绍&#x1f964;本文内容起因代码资源情况改造 &#x1f4e2;文章总结&#x1f4e5;博主目标 &#x1f50a;博主介绍 &#x1f31f;我是廖志伟&#xff0c;一名Java开发工程师、Java领域优质创作者、CSDN博客专家、51CTO专家博主、阿里云专家博主、…

Redis入门到实战-第十二弹

Redis实战热身Bitfields篇 完整命令参考官网 官网地址 声明: 由于操作系统, 版本更新等原因, 文章所列内容不一定100%复现, 还要以官方信息为准 https://redis.io/Redis概述 Redis是一个开源的&#xff08;采用BSD许可证&#xff09;&#xff0c;用作数据库、缓存、消息代理…

Elasticsearch:使用在本地计算机上运行的 LLM 以及 Ollama 和 Langchain 构建 RAG 应用程序

无需 GPU 的隐私保护 LLM。在本博客中&#xff0c;我将演示使用不同的工具 Ollama 构建的 RAG 应用程序。 与本文相关的所有源代码均已发布在 github上。 请克隆存储库以跟随文章操作。我们可以通过如下的方式来克隆&#xff1a; git clone https://github.com/liu-xiao-guo/o…

Unity 学习笔记 5.控制飞机飞行

目录 1.摄像机跟随的方法 2.鼠标按键响应 3.键盘按键响应 4.导入素材 5.让飞机向前飞 6.摄像机跟随飞机移动 7.鼠标控制飞机倾斜 8.键盘控制飞机飞行 下载源码 UnityPackage 1.摄像机跟随的方法 2.鼠标按键响应 3.键盘按键响应 4.导入素材 下载素材 步骤&#xff1a; 将…

itextPdf生成pdf简单示例

文章环境 jdk1.8&#xff0c;springboot2.6.13 POM依赖 <dependency><groupId>com.itextpdf</groupId><artifactId>itextpdf</artifactId><version>5.5.13</version></dependency><dependency><groupId>com.ite…