1 条题解

  • 1
    @ 2021-09-21 23:11:44
    #include <bits/stdc++.h>
    using namespace std;
    const int KM = 2001, KL = 1e9 + 7;
    struct F {
      int l, c;
    } f[KM], ans;
    int a[KM], n;
    void Update(F &f, F _f) {
      if (_f.l > f.l) {
        f = _f;
      } else if (_f.l == f.l) {
        f.c = (f.c + _f.c) % KL;
      }
    }
    int main() {
      cin >> n;
      for (int i = 1; i <= n; i++) {
        cin >> a[i];
      }
      for (int i = 1; i <= n; i++) {
        f[i] = {1, 1};
        for (int j = 1; j < i; j++) {
          if (a[j] < a[i]) {
            Update(f[i], {f[j].l + 1, f[j].c});
          }
        }
        Update(ans, f[i]);
      }
      cout << ans.l << " " << ans.c;
      return 0;
    }
    
  • 1

信息

ID
1000
难度
9
分类
(无)
标签
递交数
2
已通过
1
通过率
50%
上传者