第十三届蓝桥杯 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;
}
相关推荐
小小龙学IT1 小时前
Taskflow:用一张“任务图“玩转现代 C++ 并行编程开源项
c++·开源·github
wuminyu1 小时前
JUC包的AQS与JVM的ObjectMonitor机制对比分析
java·linux·c语言·jvm·c++
就不掉头发2 小时前
C++函数模板
java·开发语言·c++
wuyk5552 小时前
89.嵌入式内存管理的“稳定利器”:内存池原理与C语言实现
c语言·开发语言·stm32·单片机·嵌入式硬件
王老师青少年编程3 小时前
2026年全国青少年信息素养大赛算法应用主题赛C++赛项【决赛】模拟卷(汇总)
c++·模拟卷·2026年·青少年信息素养大赛·算法应用主题赛·决赛
思麟呀4 小时前
C++(八):文件系统库+并行算法
开发语言·c++
凉茶钱4 小时前
【数据结构】C语言实现队列
c语言·数据结构
啊啊啊啊啊!!!!16 小时前
【c++】stack和queue的接口使用以及底层实现
开发语言·c++
上海安当技术17 小时前
C/S 桌面软件怎么接 UKey 强认证?C# SDK 与 C 动态库集成 WinForms/Qt/工控实战
c语言·qt·c#
(Charon)19 小时前
【C++】锁与原子操作(四):自旋锁的完整实现与性能优化
c语言·开发语言·c++