zoukankan      html  css  js  c++  java
  • 汕头市队赛 SRM10 T1 贪心只能过样例

    贪心只能过样例 SRM 10

    描述

    给出n个数a[i](1<=a[i]<=n),问最多能把这些数分成几组,使得每个数a[i]所在的组至少有a[i]个数

    输入格式

    第一行一个整数n,接下来n行每行一个整数分别是a[1],a[2],...,a[n]

    输出格式

    一行,输出答案,一个整数

    样例输入

    5
    2
    1
    2
    2
    3

    样例输出

    2

    数据范围与约定

    数据有梯度,分布如下:
    0<n<=20 7组数据
    20<n<=5000 15组数据
    5000<n<=1000000 23组数据

    样例解释

    一种方案是分为2,2和1,2,3两组

    ————————————————————————

    这道题维护一波前缀最小值就好了QAQ

    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    #define LL long long
    using namespace std;
    const int M=1000007,inf=0x3f3f3f3f;
    int read(){
        int ans=0,f=1,c=getchar();
        while(c<'0'||c>'9'){if(c=='-') f=-1; c=getchar();}
        while(c>='0'&&c<='9'){ans=ans*10+(c-'0'); c=getchar();}
        return ans*f;
    }
    LL n,w[M],ans;
    LL f[M],mx[M];
    int main()
    {
        n=read();
        for(int i=1;i<=n;i++) w[i]=read();
        sort(w+1,w+1+n);
        for(int i=1;i<=n;i++){
            if(i-w[i]<0) f[i]=0;
            else f[i]=mx[i-w[i]]+1;
            mx[i]=max(f[i],mx[i-1]);
        }printf("%lld
    ",f[n]);
        return 0;
    }
    View Code
  • 相关阅读:
    我的20130220日 在北京 do{ Web Develop } while(!die)
    关于NVelocity模板引擎初学总结
    C# 23种设计模式汇总
    基于模型的设备故障检测
    图像去噪之光斑去除
    虹膜识别
    封闭曲线拟合
    基于故障树的系统可靠性分析
    图像识别之棋子识别
    时间序列的模式距离
  • 原文地址:https://www.cnblogs.com/lyzuikeai/p/7293791.html
Copyright © 2011-2022 走看看