第十四届蓝桥杯模拟赛第二期部分题答案(C++代码)

news/2024/10/30 23:24:42/

A题

题面

请找到一个大于 2022 的最小数,这个数转换成二进制之后,最低的 6 个二进制为全为 0 。
请将这个数的十进制形式作为答案提交。

答案:2048

B题

题面

我们计从 1949 年 10 月 1 日至 1949 年 10 月 2 日为经过了 1 天。请问从 1949 年 10 月 1 日至 2022 年 1 月 1 日经过了多少天?

答案:26390

C题

题面

8518 是一个非常特殊的数,如果把这个数看成 16 进制数,它的值为 (8518)16=8161616+51616+116+8=34072,而 34072 正好是 8518 的整数倍。9558 也是这样一个数,当看成 16 进制时是 38232。其实长度为 1 的数 0 到 9 都满足看成 16 进制后是自己的整数倍(1倍)。请问,除开长度为 1 的数,最小的满足这样条件的数是多少?

答案:1038

D题

题面

小蓝有一个 30 行 60 列的数字矩阵,矩阵中的每个数都是 0 到 9 之间的数字。现在小蓝想从这个矩阵的第一行第一列画一条折线到第 30 行 60 列,线只能沿水平向右走或竖直向下走,只能在有数字的地方拐弯。小蓝想知道,这样一条线经过的数字的和最大是多少。

答案:592

E题

题面

将 2022 拆分成不同的质数的和,请问最多拆分成几个?

答案:32

J题

题面

小蓝有一个序列 a[1], a[2], …, a[n],每次可以交换相邻的两个元素,代价为两个元素中较大的那个。请问,要通过交换将序列变为从小到大递增的序列,总代价最少为多少?

输入格式

输入一行包含一个整数 n ,表示序列长度。
第二行包含 n 个整数,表示给定的序列。

输出格式

输出一行包含一个整数,表示最少代价的值。

数据范围

对于 30% 的评测用例,1 <= n <= 1000, 1 <= a[i] <= 1000。
对于 60% 的评测用例,1 <= n <= 50000, 1 <= a[i] <= 50000。
对于所有评测用例,1 <= n <= 1000000, 1 <= a[i] <= 1000000。

算法(贪心,逆序对,树状数组)

给定一个序列x1到xn,假如xi是目标元素,xj是排完序后的位置(且xj>xi)(xj<xi是同理的),然后目标元素移动到对应位置需要移动xj ~ xi次,若存在x≥目标元素,将目标从xi移到xj后,x则会向前一个位置,后续需要再次移动,即至少计算两次x,此时不是最优解

当目标移到xj时,xi到xj序列变成xi+1到xj、xi序列,原序列xi到xj中, xi+1到xj上的元素对于目标来说都是1(目标对后续那段序列造成的逆序对是1),移动完后,xi+1到xj都向前移动了一个位置,即对于xj来说当前位置是xj-1,因此需要代入逆序对。

逆序对的求法有归并排序、树状数组、线段树的方法,这里用树状数组来求逆序对,求的是该数前面有几个比它大的。

经过一番思考后可以得出式子:(新坐标-(原坐标-该数的逆序对))

代码

#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
typedef long long LL;
const int N = 1e6+10;
LL res;
int n,ni[N];
int tr[N];struct Node
{int data,id;bool operator < (const Node &W){//排序关键字if(data == W.data) return id<W.id;return data<W.data;}
}node[N];int lowbit(int x)
{return x&-x;
}int query(int x)
{int res=0;for(int i=x; i; i-=lowbit(i)) res+=tr[i];return res;
}void add(int x,int v)
{for(int i=x; i<N; i+=lowbit(i)) tr[i]+=v;
}int main()
{scanf("%d", &n);for(int i=1; i<=n; i++){scanf("%d",&node[i].data);node[i].id=i;}//求当前数前面比它大的个数for(int i=1; i<=n; i++){//线段树求逆序对ni[node[i].id]=query(N-1)-query(node[i].data);add(node[i].data,1);}sort(node+1,node+n+1);for(int i=1; i<=n; i++){//(新坐标-(原坐标-逆序对))res+=(LL)(i-(node[i].id-ni[node[i].id]))*node[i].data;}printf("%lld",res);return 0;
}

个人观点,非官方答案。


http://www.ppmy.cn/news/1097.html

相关文章

Shell脚本流程控制语句CASE详解

本章节继续介绍流程控制语句&#xff0c;在前面的while语句&#xff0c;read语句生成了一些简单的菜单并构建了用户选择处理逻辑。使用了了一系列的if命令来识别可能的菜单选项。这种逻辑经常会出现在程序中&#xff0c;Shell提供了们处理多重选择的流程控制机制。 1.case命令 …

python接口自动化测试框架

本文总结分享介绍接口测试框架开发&#xff0c;环境使用python3selenium3unittestddtrequests测试框架及ddt数据驱动&#xff0c;采用Excel管理测试用例等集成测试数据功能&#xff0c;以及使用HTMLTestRunner来生成测试报告&#xff0c;目前有开源的poman、Jmeter等接口测试工…

[附源码]计算机毕业设计养生药膳推荐系统Springboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

redis我记不住的那些命令(五)

背景&#xff1a;我记不住那么多命令&#xff0c;又是Linux命令&#xff0c;又是Git命令&#xff0c;又是kubernetes的命令&#xff0c;又是maven命令&#xff0c;又是redis命令。所谓好记性不如烂笔头&#xff0c;记下来吧。 一、set集合 集合的特点是 无序且各不相同的元素…

Linux安装使用Minio

目录简介安装方式1(推荐)安装方式2使用简介 需要一个靠谱的文件管理系统&#xff0c;所以想到了minio。在此记录过程。使用树莓派搭建。Linux下载不同的包即可。 官网地址&#xff1a;https://www.minio.org.cn/ 官方下载地址&#xff1a;https://dl.min.io/server/minio/rele…

NNDL 实验七 循环神经网络(3)LSTM的记忆能力实验

文章目录6.3 LSTM的记忆能力实验6.3.1 模型构建6.3.1.1 LSTM层6.3.1.2 模型汇总6.3.2 模型训练6.3.2.1 训练指定长度的数字预测模型6.3.2.2 多组训练6.3.2.3 损失曲线展示【思考题1】LSTM与SRN实验结果对比&#xff0c;谈谈看法。&#xff08;选做&#xff09;6.3.3 模型评价6.…

【华为上机真题 2022】停车场车辆统计

&#x1f388; 作者&#xff1a;Linux猿 &#x1f388; 简介&#xff1a;CSDN博客专家&#x1f3c6;&#xff0c;华为云享专家&#x1f3c6;&#xff0c;Linux、C/C、云计算、物联网、面试、刷题、算法尽管咨询我&#xff0c;关注我&#xff0c;有问题私聊&#xff01; &…

一文了解 Go 接口

耐心和持久胜过激烈和狂热。 哈喽大家好&#xff0c;我是陈明勇&#xff0c;今天分享的知识是 Go 接口。如果本文对你有帮助&#xff0c;不妨点个赞&#xff0c;如果你是 Go 语言初学者&#xff0c;不妨点个关注&#xff0c;一起成长一起进步&#xff0c;如果本文有错误的地方&…