蓝桥杯真题——砍竹子(C语言)

server/2024/12/5 3:47:48/

 问题描述

这天, 小明在砍竹子, 他面前有 n 棵竹子排成一排, 一开始第 ii 棵竹子的 高度为 h_{i}​.他觉得一棵一棵砍太慢了, 决定使用魔法来砍竹子。魔法可以对连续的一 段相同高度的竹子使用, 假设这一段竹子的高度为 H, 那么用一次魔法可以,把这一段竹子的高度都变为[\sqrt{[\frac{H}{2}]+1}], 其中 [x]表示对 x 向下取整。小明想 知道他最少使用多少次魔法可让所有的竹子的高度都变为 1 。

输入格式

第一行为一个正整数 n, 表示竹子的棵数。

第二行共 n 个空格分开的正整数 h_{i}​, 表示每棵竹子的高度。

输出格式

一个整数表示答案。

样例输入

6

2 1 4 2 6 7

样例输出 

5

样例解释

其中一种方案:

214267

        →214262

        →214222

        →211222

        →111222

        →111111

共需要 5 步完成

评测数据规模

对于20%的数据,保证n<1000, h_{i}​<10^6

对于100%的数据,保证n≤2 x 10^5h_{i}​<10^18

运行限制

语言最大运行时间最大运行内存
C2s256M

解法代码 

#include <stdio.h>
#include <stdlib.h>
#include <math.h>// 定义一个二维数组来存储每个数的中间结果
// 假设每个数最多经过7次操作就能降到1,所以第二维的大小设为8(索引从0到7)
long long h[200001][8];// 计算给定数n经过一次操作后的结果
long long sum(long long n) 
{// 取当前数的一半(向下取整后加1),然后开平方根(也向下取整)return (long long)sqrtl((long double)(n / 2 + 1));
}int main(int argc, char *argv[]) 
{long long n, i, j, res = 0, k;// 读取数的数量scanf("%lld", &n);// 对每个数进行处理for (i = 0; i < n; i++) {// 读取当前数scanf("%lld", &h[i][0]);// 计算当前数的所有中间值,直到该值变为1for (j = 1; h[i][j - 1] > 1; j++) {h[i][j] = sum(h[i][j - 1]);// 累加每个数所需的操作次数res++;}}// 检查相邻两个数的所有中间值,如果找到相同的中间值,则减去一次操作for (i = 0; i < n - 1; i++) {for (j = 0; h[i][j] != 1; j++){for (k = 0; h[i + 1][k] != 1; k++) {// 如果找到相同的中间值if (h[i][j] == h[i + 1][k]) {// 减去一次操作res--;// 跳出内层循环,因为已经找到了一个匹配项break;}}}}// 打印出最终的结果printf("%lld", res);return 0;
}

答案验证


http://www.ppmy.cn/server/147457.html

相关文章

GPDB EXPLAIN ANALYZ比直接执行SQL慢?

自从GPDB闭源后&#xff0c;HashData接手举起了GPDB开源的大旗&#xff0c;由GPDB衍生而来的CloudberryDB于近期加入了Apache软件基金会孵化器&#xff0c;给GPDB开源社区带来了热度和活力。 昨天在CC群里看到GPDB中EXPLAIN ANALYZ比直接执行SQL慢的讨论。一般情况下&#xff0…

DVWA靶场文件包含(File Inclusion)通关教程(high级别)

目录 DVWA 靶场建立闯关 DVWA 靶场建立 需要的东西&#xff1a; phpStudy&#xff1a; 链接&#xff1a; phpStudy 提取码&#xff1a;0278 DVWA-master 链接&#xff1a; DVWA靶场 提取码&#xff1a;0278 建议在虚拟机中操作&#xff0c;以防数据库冲突&#xff0c;下面有…

量化交易系统开发-实时行情自动化交易-8.8.同花顺 SuperMind 平台

19年创业做过一年的量化交易但没有成功&#xff0c;作为交易系统的开发人员积累了一些经验&#xff0c;最近想重新研究交易系统&#xff0c;一边整理一边写出来一些思考供大家参考&#xff0c;也希望跟做量化的朋友有更多的交流和合作。 接下来会对于同花顺 SuperMind 平台介绍…

Git中HEAD、工作树和索引的区别

在Git版本控制系统中&#xff0c;HEAD、工作树&#xff08;Working Tree&#xff09;和索引&#xff08;Index&#xff09;是三个非常重要的概念&#xff0c;它们分别代表了不同的状态或区域&#xff0c;下面我将对这三个概念进行详细的解释。 HEAD 定义&#xff1a;HEAD是一…

KubeBlocks v0.9.2发布啦!支持容器镜像滚动更新、MySQL支持Jemalloc...快来升级体验更多新功能!

KubeBlocks v0.9.2 正式发布啦&#xff01;本次发布包含了一些新功能、关键的错误修复以及各种改进。以下是详细的更新内容。 升级文档 v0.9.2 升级方式与 v0.9.1 相同&#xff0c;替换版本即可哦&#xff5e; https://kubeblocks.io/docs/release-0.9/user_docs/upgrade/up…

第八章:标准库和工具 2.开发工具 --Go 语言轻松入门

第八章&#xff1a;标准库和工具 2.开发工具 --Go 语言轻松入门 Go 语言&#xff08;也称为 Golang&#xff09;是一种由 Google 开发的开源编程语言&#xff0c;它以其简洁、高效和并发支持而闻名。开发 Go 语言应用程序时&#xff0c;有许多工具和集成开发环境&#xff08;I…

【C++】入门【五】

本节目标 一、C/C内存分布 二、C语言中动态内存管理方式 三、C中动态内存管理 四、operator new与operator delete函数 五、new和delete的实现原理 六、定位new表达式(placement-new) 七、常见面试题 一、C/C内存分布 一个程序占用的内存主要有以下几部分栈区&#xff08;stac…

[Redis#9] stream | geospatial | HyperLogLog | bitmaps | bitfields

目录 1.Streams 事件驱动机制 事件 JS (做界面) 事件是干什么的&#xff1f; 2.geospatial 3.HyperLogLog 4.bitmaps 5.bitfields redis 常用的 data types 有 10 种&#xff0c;我们前面已经讲到了 5 种&#xff0c;这篇文章将对剩下的 5 种特殊数据结构进行讲解~ 1.…