牛客小白月赛27 B

B 乐***对

分析

考虑 表示以 结尾可划分出的最多队伍数。对于不合法的方案只有可能最大的那个人的要求大于了总人数。而对于 转移只有两种决策。

  • 加入上一组。
  • 新开一组。

    代码

    #include<bits/stdc++.h>
    using namespace std;
    const int N = 1e5 + 100;
    int f[N],n,a[N];
    int main()
    {
      cin >> n;
      for(int i = 1;i <= n;i++) cin >> a[i];
      sort(a+1,a+1+n);
      for(int i = 1;i <= n;i++) {
          if(i - a[i] + 1 >= 1) f[i] = max(f[i-a[i]]+1,f[i-1]);
      }
      (n-a[n]<0)?cout << "-1" << endl:cout << f[n] << endl;
      return 0;
    }
全部评论

相关推荐

不愿透露姓名的神秘牛友
11-26 15:46
已编辑
字节国际 电商后端 24k-35k
点赞 评论 收藏
分享
评论
2
2
分享
牛客网
牛客企业服务