K11302 Lemonade Line[USACO]

53 篇文章 0 订阅
13 篇文章 0 订阅

题目描述

农场上一个炎热的夏日,Farmer John为他的N个奶牛提供柠檬水,所有的奶牛编号从1到N。所有的奶牛都喜欢柠檬水,只是每个奶牛喜欢的程度不一样。具体的说就是奶牛i为了获取柠檬水,取柠檬水的时候只愿意排在最多wi头奶牛后面。

现在所有的奶牛都在田里面,当Farmer John敲响铃铛时,这些奶牛会立刻跑到Farmer John的柠檬水摊位。

奶牛们会在Farmer John提供柠檬水之前到达到摊位,但是没有两头奶牛同一时刻达到摊位。此外,当奶牛i达到时,当且仅当最多有wi头奶牛在排队时她才会排队。

Farmer John想要提前准备一定量的柠檬水,而且他不想浪费。排队的奶牛的数量取决于它们到达的顺序,请帮助Farmer John计算出,最少的可能排队的奶牛数量。

输入格式

第一行:一个整数N,表示奶牛的数量(1≤N≤10^5)

第二行:用空格隔开的N个整数,表示wi....wN,表示每个奶牛最多愿意排在wi头奶牛后面。(0≤wi≤10^9)

输出格式

一行,一个整数,表示所有编号的奶牛都到达摊位的前提下,最小可能排队的奶牛数量

输入输出样例

输入样例1:

5
7 1 400 2 2

输出样例1:

3

说明

样例说明:

在这个情况下,可能最后仅有三头奶牛在队伍中(这也是最小可能值)。假设w=7和w=400的奶牛先到并等在队伍中。然后w=1的奶牛到达并且会离开,这是由于已经有2头奶牛在队伍中了。然后w=2的两头奶牛到达,一头留下排队,一头离开。

【耗时限制】1000ms 【内存限制】128MB

//
//Created by Carlgood.
//
#include<iostream>
#include<cmath>
#include<string>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<sstream>
using namespace std;
int a[100010];
bool cmp(const int &x,const int &y)
{
    return x>y;
}
int main()
{
	int n,cnt=0;
    cin>>n;
    for(int i=1;i<=n;i++)
    {
    	cin>>a[i];
	}
    sort(a+1,a+n+1,cmp);
    for(int i=1;i<=n;i++)
	{
        if(cnt<=a[i])
		{
			cnt++;
		}
        else
		{
			break;
		}
    }
    cout<<cnt;
}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值