第十三届蓝桥杯C B组 J:砍竹子

2023-11-02

 思路:

首先看数据范围 2e5,比较大。而且有一个不变的是 我们每次都从最高的竹子区间开始砍,那么每进行一次砍操作接着还得再找出最高的竹子区间,代表要有多次排序,所以自然而然想到了一个数据结构:堆。

想到 堆 思路就打开了。

可以用pair存高度和编号,也可用结构体,我习惯用结构体,所有这次用结构体排序来解题,想看pair实现的可以移步  大佬的题解

结构体自写运算符重载,在这里格式要写对了:const一个也不能少

typedef long long ll;
struct node
{
	ll h;
	int num;
	bool operator <(const node &rhs) const
	{
		if(h==rhs.h) return num>rhs.num;
		return h<rhs.h;
	}
};

然后每次找出最高的竹子,因为编号也是有序的,所以直接把相同高度且编号连续的竹子依次取出,然后把竹子砍一半再加入堆中。

结束条件很明显,最高的竹子的高度是1就代表我们已经结束了。

但这道题中  sqrt函数对于long long 类型数据计算会有误差,所以要么自己重载sqrt函数,或者用sqrtl函数,否则将一直卡在65%,有部分点过不了。

代码:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
struct node
{
	ll h;
	int num;
	bool operator <(const node &rhs) const//运算符重载 
	{
		if(h==rhs.h) return num>rhs.num;
		return h<rhs.h;
	}
};
priority_queue<node> q;
int main()
{
	int n,ans=0;
	ll t;
	cin>>n;
	for(int i=1;i<=n;i++)//一开始全都加入堆 
	{
		scanf("%lld",&t);
		q.push((node){t,i});
	}
	while(q.top().h!=1)//最高的竹子高度为1那么肯定都砍完了结束 
	{
		t=q.top().h;//取出最高竹子的高度和编号 
		n=q.top().num-1;
		while(q.top().h==t&&q.top().num==n+1)//把高度相同且编号连续的竹子砍完再入堆 
		{
			n++;
			q.pop();
			q.push((node){sqrtl(t/2+1),n});
		}
		ans++;
	}
	cout<<ans;
	return 0;
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

第十三届蓝桥杯C B组 J:砍竹子 的相关文章

  • 第六题 整除排序

    题目描述 有一个序列 序列的第一个数是n 后面的每个数是前一个数整除2 请输出这个序列中的值为正数 的项 输入格式 输入一行包括一个整数n 输出格式 输出一行 包括多个整数 相邻的整数之间用一个空格分开 表示答案 测评用例规模和标准 对于8
  • 青蛙过河 蓝桥杯 2097

    问题描述 小青蛙住在一条河边 它想到河对岸的学校去学习 小青蛙打算经过河里 的石头跳到对岸 河里的石头排成了一条直线 小青蛙每次跳跃必须落在一块石头或者岸上 不过 每块石头有一个高度 每次小青蛙从一块石头起跳 这块石头的高度就 会下降 1
  • c++ 中ref 和引用的区别

    c 中 本身可以使用 来实现引用 那为什么还会出现ref 呢 ref int f2 int c c cout lt lt in function c lt lt c lt
  • 蓝桥杯 c/c++ 算法提高 最长滑雪道

    算法提高 最长滑雪道 资源限制 时间限制 1 0s 内存限制 256 0MB 问题描述 小袁非常喜欢滑雪 因为滑雪很刺激 为了获得速度 滑的区域必须向下倾斜 而且当你滑到坡底 你不得不再次走上坡或者等待升降机来载你 小袁想知道在某个区域中最
  • openGL之API学习(一九四)glGenTextures glActiveTexture

    glGenTextures产生的是一个比较小的整数id 纹理单元名 glActiveTexture激活的是纹理单元号 GL TEXTUREi 它们二者的关系为GL TEXTUREi GL TEXTURE0 id glBindTexture使
  • 蓝桥杯---貌似化学---逆矩阵

    试题 算法训练 貌似化学 资源限制 时间限制 1 0s 内存限制 256 0MB 问题描述 现在有a b c三种原料 如果他们按x y z混合 就能产生一种神奇的物品d 当然不一定只产生一份d 但a b c的最简比一定是x y z 现在给你
  • C++11 删除 字符串中的空格

    include
  • C语言实现顺序表

    线性表是数据结构中的逻辑结构 线性表采用顺序存储的方式存储就称之为顺序表 数组是顺序表在实际编程中的具体实现方式之一 本篇主要介绍顺序表 顺序表的创建 添加元素 删除元素 遍历输出等操作 1 创建顺序表 1 1定义顺序表结构体 结构体包含三
  • 对象的初始化和清理(构造和析构函数)

    对象的初始化和清理 1 1 构造函数 1 1 1 没有返回值 没有void 类名相同 可以发生重载 1 2 构析函数 1 2 1 没有返回值 没有void 函数名称 类名 不可以发生重载 不可以有参数 1 3 系统会默认调用 构造函数和析构
  • Python蓝桥杯 基础练习 十六进制转八进制

    def huan n n format int n 16 o print n x int input for i in range 1 x 1 n input huan n format o 将数据格式化为八进制 int n 16 返回字符
  • 【算法竞赛】Python快速入门指南

    该指南由GPT4编写 用于快速入门蓝桥杯Python组 当然 仅限入门而已 本指南由GPT 4生成 我只是负责引导 并对内容进行整理和补充 一直以来我都是使用C 作为算法竞赛语言 但是奈何C 组太卷 自己又太菜 于是另谋他路 Prompt模
  • C++:压缩算法1.0

    题目描述 某压缩算法的基本思想是用一个数值和一个字符代替具有相同值的连续字符 例如 输入字符串 RRRRRGGBBBBBBC 压缩后为 5R2G6B1C 请编写程序实现上述功能 输入 输入共一行 一串待压缩的字符 输出 输出共一行 压缩后的
  • 蓝桥杯真题:迷宫

    目录 题目描述 运行限制 dfs bfs 结果 题目描述 本题为填空题 只需要算出结果后 在代码中使用输出语句将所填结果输出即可 下图给出了一个迷宫的平面图 其中标记为 11 的为障碍 标记为 00 的为可以通行的地方 010000 000
  • 2023蓝桥杯python 组试题A:2023

    题目 请求出在 12345678 至 98765432 中 有多少个数中完全不包含 2023 完全不包含 2023 是指无论将这个数的哪些数位移除都不能得到 2023 例如 20322175 33220022 都完全不包含 2023 而 2
  • 蓝桥杯 填字母游戏(博弈论)

    小明经常玩 LOL 游戏上瘾 一次他想挑战K大师 不料K大师说 我们先来玩个空格填字母的游戏 要是你不能赢我 就再别玩LOL了 K大师在纸上画了一行n个格子 要小明和他交替往其中填入字母 并且 1 轮到某人填的时候 只能在某个空格中填入L或
  • 八大排序算法(六)——优先队列、堆和堆排序

    6 1 API 优先队列是一种抽象数据类型 它表示了一组值和对这些值的操作 优先队列最重要的操作就是删除最大元素和插入元素 6 2 初级实现 6 2 1 数组实现 无序 或许实现优先队列最简单方法就是基于下压栈的代码 insert 方法的代
  • G - Ginger的NB数(二分)

    G Ginger的NB数 SDUT OnlineJudge include
  • 多少个X 蓝桥杯模拟

    问题描述 给定一个字母矩阵 一个 X 图形由中心点和由中心点向四个45度斜线方向引出的直线段组成 四条 线段的长度相同 而且四条线段上的字母和中心点的字母相同 一个 X图形可以使用三个整数 r c L 来描述 其中 r c 表示中心点位于第
  • 字符串处理-第11届蓝桥杯省赛Python真题精选

    导读 超平老师的Scratch蓝桥杯真题解读系列在推出之后 受到了广大老师和家长的好评 非常感谢各位的认可和厚爱 作为回馈 超平老师计划推出 Python 蓝桥杯真题解析100讲 这是解读系列的第26讲 字符串处理 本题是2020年6月20
  • 如何查看崩溃日志

    目录 描述 思路 查看ipa包崩溃日志 简单查看手机崩溃信息几种方式 方式1 手机设置查看崩溃日志 方式2 Xocde工具 方式3 第三方软件克魔助手 环境配置 实时日志 奔溃日志分析 方式四 控制台资源库 线上崩溃日志 线上监听crash

随机推荐

  • java实现短链接得到长链接!!!

    java实现短链接得到长链接 重点 params setParameter ClientPNames HANDLE REDIRECTS false 禁止重定向 不设置 有些短链接 获取不到headers里的Location HttpClie
  • chrome 全屏模式 隐藏地址栏_6个Chrome隐藏的小技巧,你可能不知道但很实用

    Chrome占据了浏览器的大半壁江山 不少人也是将它作为电脑的默认浏览器 而它也确实非常强大 拥有着非常快的速度以及丰富的插件 同时它也隐藏了不少实用的功能 通过挖掘它们让我们更加意识到Chrome的强大 以下便是我们收集的6个不为大众所熟
  • Linux用户环境变量、系统环境变量和PATH变量

    目录 一 用户环境变量 二 系统环境变量 三 PATH变量 1 修改PATH环境变量 一 用户环境变量 PS 修改文件执行权限案例 1 在文本编辑器中新建一个shell脚本 直接执行这个文件会发现权限不够 以详细模式查看这个文件的权限 发现
  • OpenCV——Sobel边缘检测

    目录 一 Sobel算法 1 算法概述 2 主要函数 二 C 代码 三 python代码 四 结果展示 1 灰度图 2 X方向一阶边缘 2 Y方向一阶边缘 3 整幅图像的一阶边缘 五 相关链接 一 Sobel算法 1 算法概述 Sobel边
  • matplotlib库使用教程:这一篇就够了

    一 导入库 import matplotlib pyplot as plt 二 显示图片 plt imshow imge 负责对图像进行处理 imge类型
  • Zotero安装教程(非常详细)从零基础入门到精通,看完这一篇就够了

    Zotero安装及简单配置 1 引言 Zotero是目前最符合我对文献管理软件需求的一款 在这里简单介绍下其安装教程及我在使用的插件 2 安装及同步设置 2 1 下载 前往官网https www zotero org 点击Download按
  • J2EE&反射

    文章目录 什么是反射 类类 反射实例化 反射动态方法调用 反射读写属性 源代码 什么是反射 Java语言的一种机制 通过这种机制可以动态的实例化对象 读写属性 调用方法 类类 类类 描述类的类 不是官方定义的语言 Class forName
  • Flutter开发篇 TextField和TextFromField

    TextFiled和TextFromField都是用来输入的 但是也是有区别的 尤其是方法有很大的区别 大家可以分别查看源码文档 在资料比较少的情况下那是最快的学习方法 TextEditingController controller Te
  • git创建本地分支,远程分支

    一 本地分支 创建本地分支 然后切换到dev分支 git checkout b dev git checkout命令加上 b参数表示创建并切换 相当于以下两条命令 git branch dev git checkout dev 然后 用gi
  • word自动编号设置方法

    需求是使用word时自动生成如下类型的自动编号 第一章 项目详细设计 1 1 视频监控系统 1 1 1 前端子系统 1 1 1 1 球机 第二章 案例介绍 2 1 某某区平安城市介绍 实现方法 1 首先点击 多级列表 定义新的多级列表 2
  • python爬虫-数据可视化-气温排行榜

    本文的文字及图片来源于网络 仅供学习 交流使用 不具有任何商业用途 版权归原作者所有 如有问题请及时联系我们以作处理 以下文章来源于腾讯云 作者 py3study 想要学习Python Python学习交流群 1039649593 满足你的
  • vulnhub靶机Brainpan

    主机发现 arp scan l 端口扫描 nmap min rate 10000 p 192 168 21 156 服务扫描 nmap sV sT O p9999 10000 192 168 21 156 这个地方感到了有点不对劲 pyth
  • 粒子滤波(Particle filter)算法简介及MATLAB实现

    粒子滤波是以贝叶斯推理 点击打开链接 和重要性采样为基本框架的 因此 想要掌握粒子滤波 对于上述两个基本内容必须有一个初步的了解 重要性采样呢 其实就是根据对粒子的信任程度添加不同的权重 添加权重的规则就是 对于我们信任度高的粒子 给它们添
  • 解决pip安装numpy问题:ERROR: Failed building wheel for numpy/ERROR: numpy-1.22.4+mkl-cp38-cp38-win_amd64.wh

    出现过问题 ERROR Failed building wheel for numpy 下载了whl文件后报错ERROR numpy 1 22 4 mkl cp38 cp38 win amd64 whl is not a supported
  • java怎么关闭fxml窗口,如何关闭窗口关闭JavaFX应用程序?

    In Swing you can simply use setDefaultCloseOperation to shut down the entire application when the window is closed Howev
  • 因果推理(八):工具变量(Intrusmental Variables)

    关于因果关系的识别 前面介绍了一些方法 随机对照试验 后门调整 前门调整 do 演算 今天介绍另一种进行因果效应识别的另一种方法 工具变量 1 什么是工具变量 上面的因果图中 Z Z Z就是一个工具变量 可以利用它在 U U U观测不到的情
  • Java贪心算法: 田忌赛马

    import java util Scanner import java util List import java util ArrayList import java util Collections public class Main
  • TensorFlow2.0简介和线性回归

    简介 废弃清除了1 0版本的多数API 使用了高级核心API tf Keras Eager模式 代码直接运行 直观调试 tf GradientTape 求解梯度 自定义训练逻辑 tf data 加载图片数据和结构化数据 tf fuction
  • 构建一个react项目_用React构建一个简单的计数器

    构建一个react项目 In this short tutorial we ll build a very simple example of a counter in React applying many of the concepts
  • 第十三届蓝桥杯C B组 J:砍竹子

    思路 首先看数据范围 2e5 比较大 而且有一个不变的是 我们每次都从最高的竹子区间开始砍 那么每进行一次砍操作 接着还得再找出最高的竹子区间 代表要有多次排序 所以自然而然想到了一个数据结构 堆 想到 堆 思路就打开了 可以用pair存高