第十三届蓝桥杯 2022 C/C++组 修剪灌木

目录

题目:

题目描述:

题目链接:

思路:

核心思路:

思路详解:

代码:

代码详解:


题目:

题目描述:

题目链接:

P8781 [蓝桥杯 2022 省 B] 修剪灌木 - 洛谷

修剪灌木 - 蓝桥云课

思路:

核心思路:

模拟+找规律

思路详解:

这题的核心是理解题意并想清楚最高高度是怎么来的。求最高高度:爱丽丝刚修剪完第i颗树,等到她再一次碰到这颗树走的路就是最高高度。当然由题的情景要分成两种情况,第一种:ai->an->ai(即剪完向右走),第二种ai->a1->ai(即剪完向左走)。第一种情况走的路是2*(n-i),算式中n-i表示离右端点的距离,乘2是因为走过去还要走回来。第二种情况走的路是2*(i-1),算式中i-1表示离左端点的距离,乘2是因为走过去还要走回来。显然通过思考或者在草稿纸上模拟,靠近左端点的树应该取剪完向右走的路更长,靠近右端点应该取剪完向左的

代码:

代码详解:

复制代码
#include<bits/stdc++.h> //这题考察的是模拟+找规律,能正确的分析出怎么在该情景中求最高高度就很简单了 
using namespace std; //求最高高度:爱丽丝刚修剪完第i颗树,等到她再一次碰到这颗树走的路就是最高高度
//当然由题的情景要分成两种情况,第一种:ai->an->ai(即剪完向右走),第二种ai->a1->ai(即剪完向左走)
//第一种情况走的路是2*(n-i),算式中n-i表示离右端点的距离,乘2是因为走过去还要走回来
//第二种情况走的路是2*(i-1),算式中i-1表示离左端点的距离,乘2是因为走过去还要走回来
//显然通过思考或者在草稿纸上模拟,靠近左端点的树应该取剪完向右走的路更长,靠近右端点应该取剪完向左的 

int n;

int main()
{
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		cout<<max(2*(n-i),2*(i-1))<<endl; //两种情况的路取max即为最高高度 
	}
	return 0;
}
相关推荐
我在人间贩卖青春23 分钟前
C++之this指针
c++·this
云姜.25 分钟前
java多态
java·开发语言·c++
CoderCodingNo35 分钟前
【GESP】C++五级练习题 luogu-P1865 A % B Problem
开发语言·c++·算法
陳103041 分钟前
C++:红黑树
开发语言·c++
VekiSon1 小时前
Linux内核驱动——杂项设备驱动与内核模块编译
linux·c语言·arm开发·嵌入式硬件
一切尽在,你来1 小时前
C++ 零基础教程 - 第 6 讲 常用运算符教程
开发语言·c++
weixin_499771551 小时前
C++中的组合模式
开发语言·c++·算法
2的n次方_1 小时前
CANN Ascend C 编程语言深度解析:异构并行架构、显式存储层级与指令级精细化控制机制
c语言·开发语言·架构
近津薪荼2 小时前
dfs专题5——(二叉搜索树中第 K 小的元素)
c++·学习·算法·深度优先
xiaoye-duck2 小时前
吃透 C++ STL list:从基础使用到特性对比,解锁链表容器高效用法
c++·算法·stl