第十三届蓝桥杯 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;
}
相关推荐
重启的码农11 分钟前
Windows虚拟显示器MttVDD源码分析 (6) 高级色彩与HDR管理
c++·windows·操作系统
jingfeng51421 分钟前
C++多态
开发语言·c++
kyle~34 分钟前
C/C++---浮点数与整形的转换,为什么使用sqrt函数时,要给参数加上一个极小的小数(如1e-6)
c语言·开发语言·c++
jokr_35 分钟前
C++ STL 专家容器:关联式、哈希与适配器
java·c++·哈希算法
倔强的石头2 小时前
java程序员如何搭建C++windows开发环境搭建(二)
c++·后端
The Chosen One9852 小时前
红黑树下探玄机:C++ map&multimap 的幕后之旅
开发语言·c++
汤永红2 小时前
week5-[字符数组]查找
c++·算法·信睡奥赛
快乐的划水a3 小时前
中介者模式及优化
c++·设计模式·中介者模式
多吃蔬菜!!!3 小时前
VsCode 上的Opencv(C++)环境配置(Linux)
开发语言·c++
用户6120414922133 小时前
C语言做的排队叫号系统
c语言·后端·敏捷开发