P8781 [蓝桥杯 2022 省 B] 修建灌木 题解

· · 题解

水题一道。
传送门
对于所有的树,它的最高高度其实和正常没什么区别。
为什么呢?如果爱丽丝刚刚修剪完第 i 棵树,那么她再次碰见这棵树要走的路都是相同的。所以,对于第 i 棵树来说,它的高度其实就是爱丽丝离开这棵树的天数,即 2\times(n-i)。这个算式里,n-i 表示离右端点的距离,乘 2 是因为这段路过去了还要再走一遍回来。
测试样例,发现没有对。
因为我们只考虑了右端点,没有考虑左端点。对于第 i 棵树来说,它离左端点的距离为 i-1。因为要最高的长度,所以正解的算式为:\operatorname{max}(n-i,i-1)\times2
CODE:

#include <iostream>
using namespace std;
int n;
int main(void){
    cin>>n;
    for(int i=1;i<=n;i++){//遍历,输出结果
        cout<<max(n-i,i-1)*2<<endl;
    }
}