0
已解决
徐云皓
新手天翼
新手天翼
2606 抠门的农场主
题目描述 Description
农场主养了N头牛,这些牛喜欢喝咖啡,于是农场主有时会提供咖啡给牛们。牛需要先排好队,排完队然后才开始取咖啡。但如果前方队伍太长,超过牛的忍受范围,有的牛就会选择不排队。请你计算所有牛到达所有顺序的情况下,最少的排队的牛的数量。
输入描述 Input Description
第一行,一个整数N,N(1 ≤ N ≤ 10^5 )表示牛的个数
接下来N行,每行一个整数,W,W(0 ≤ W ≤ 10^9)表示这头牛能容忍的队伍最长长度,如果队伍比这要长,则它会拒绝排队领咖啡
输出描述 Output Description
输出在所有可能的牛到达顺序之下,最小可能的排队的牛数量。
样例输入 Sample Input
5
7
1
400
2
2
样例输出 Sample Output
3
0
已采纳
徐熙晨
新手光能
新手光能
排序规则如下
bool cmp(int a,int b)
{
return a>b;
}
核心代码如下
sort(a+1,a+n+1,cmp);
for(int i=1;i<=n;i++)
if(i-1<=a[i])
s++;
else
break;
0
0
李彬
初级守护
初级守护
这道题目So easy,关键看你能否看出来。
思路很简单:将n个数从大到小排序。因为要使得排队的牛最少,不难发现应该将忍耐程度最大的牛排在最前面。
排序之后的核心代码:
for(int i=1;i<=n;i++){
if(i-1<=a[i])sum++;
}
0