目录
题目:
题目描述:
题目链接:
思路:
核心思路:
思路详解:
代码:
代码详解:
题目:
题目描述:
题目链接:
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;
}