牛客小白月赛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;
    }
全部评论

相关推荐

海康威视 软开岗 15k15
点赞 评论 收藏
分享
11-11 14:21
西京学院 C++
无敌混子大王:首先一点,不管学校层次怎么样,教育经历放在第一页靠上位置,第一页看不到教育经历,hr基本直接扔掉了
点赞 评论 收藏
分享
拉丁是我干掉的:把上海理工大学改成北京理工大学。成功率增加200%
点赞 评论 收藏
分享
评论
2
2
分享
牛客网
牛客企业服务