2 条题解

  • 0
    @ 2024-4-8 23:17:29
    def solve(n):
        for i in range(1,n+1):
            print(2*max(i-1,n-i))
    def main():
        n=int(input("请输入n:"))
        solve(n)
    
    if __name__=='__main__':
        main()
    
    • 0
      @ 2024-3-21 0:28:05

      【2022年省赛B组】试题D:修剪灌木

      题解

      🎉️ 对于第ii棵树而言,第一次被修剪时高度均为ii,因为最开始从左往右进行修剪。

      🎉️ 之后要么是从左往右修剪第ii棵树,要么是从右往左修剪第ii棵树。

      • 当从左往右修剪完第ii棵树,从这次修剪到下一次修剪时,需要经过i+1,i+2,,n1,n,n1,,ii+1, i+2, \cdots, n - 1, n, n - 1, \cdots, i,这里时间为2×(ni)2 \times(n - i),即此时高度为2×(ni)2 \times(n - i)
      • 当从右往左修剪完第ii棵树,从这次修剪到下一次修剪时,需要经过i1,i2,,1,2,,ii-1, i-2, \cdots, 1, 2, \cdots, i, 此时高度为2×(i1)2 \times (i - 1)。 由此得到第ii棵树的最大高度为max(2×(i1),2×(ni))max(2 \times (i - 1), 2 \times (n - i))。 根据这个性质可以直接输出每棵树的最大高度。

      提交代码

      #include<bits/stdc++.h>
      
      void solve()
      {
          int n; std::cin >> n;
          for(int i = 1; i <= n; i++)
          {
              std::cout << 2 * std::max(i - 1, n - i) << "\n";
          }
      }
      int main()
      {
          std::ios::sync_with_stdio(false);
          std::cin.tie(0);
          int t = 1; 
          while(t--) solve();
          return 0;
      }
      
      • 1

      信息

      ID
      969
      时间
      1000ms
      内存
      512MiB
      难度
      3
      标签
      递交数
      66
      已通过
      47
      上传者