2 条题解

  • 0
    @ 2024-2-2 17:22:46
    #include<iostream> using namespace std; const int maxn = 10000; int n; int a[maxn]; int b[maxn]; int f(int l, int r, int depth) { if (l > r) return 0; int min = maxn, mink; for(int i = 1;i <= r;++i){ if (min > a[i]) { min = a[i]; mink = i; } } int lres = f(l, mink - 1, depth + 1); int rres = f(mink + 1, r, depth + 1); return lres + rres + depth \* b[mink]; } int main() { cin >> n; for(int i = 0;i < n;++i) cin >> a[i]; for(int i = 0;i < n;++i) cin >> b[i]; cout << f(0, n - 1, 1) << endl; return 0; }
    
    • 0
      @ 2023-8-23 17:15:46

      #include using namespace std; const int maxn = 10000; int n; int a[maxn]; int b[maxn]; int f(int l, int r, int depth) { if (l > r) return 0; int min = maxn, mink; for(int i = 1;i <= r;++i){ if (min > a[i]) { min = a[i]; mink = i; } } int lres = f(l, mink - 1, depth + 1); int rres = f(mink + 1, r, depth + 1); return lres + rres + depth * b[mink]; } int main() { cin >> n; for(int i = 0;i < n;++i) cin >> a[i]; for(int i = 0;i < n;++i) cin >> b[i]; cout << f(0, n - 1, 1) << endl; return 0; }

      • 1

      信息

      ID
      15
      时间
      1000ms
      内存
      64MiB
      难度
      7
      标签
      递交数
      32
      已通过
      8
      上传者