目錄
題目:
題目描述:
題目鏈接:
思路:
核心思路:
思路詳解:
代碼:
代碼詳解:
題目:
題目描述:
題目鏈接:
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;
}