A.Easy h-index

题目描述

The h-index of an author is the largest h where he has at least h papers with citations not less than h.
Bobo has published many papers. Given a0, a1, a2 ,..., an which means Bobo has published a i papers with citations exactly i , find the h-index of Bobo.

输入

The input consists of several test cases and is terminated by end-of-file.
The first line of each test case contains an integer n . The second line contains ( n + 1) integers a0 , a1 , ... , an .

输出

For each test case, print an integer which denotes the result.
• 1 ≤ n ≤ 2 · 105
• 0 ≤ ai ≤ 109
• The sum of n does not exceed 250,000.

样例输入

1
1 2
2
1 2 3
3
0 0 0 0

样例输出

1
2
0

题意:给定被引用次数为0~n的论文分别有几张,找到最大的h,满足被引用次数大于等于h的论文至少有h张
思路:在区间[0,n]内二分答案;或直接从n~0遍历找到第一个满足条件的h
AC代码:
#include <iostream>
#include<cstdio>
#include<algorithm>
typedef long long ll;
using namespace std;

ll n;
ll a[200010];

bool ok(ll x){
  ll cnt=0;//cnt的值可能会爆int
  for(ll i=0;i<=n;i++) if(i>=x) cnt+=a[i];
  if(cnt>=x) return true;
  return false;
}

int main()
{
    while(cin>>n){
        for(ll i=0;i<=n;i++){
            cin>>a[i];
        }
        ll l=0,r=n;
        while(l<=r){
            ll mid=(l+r)/2;
            if(ok(mid)) l=mid+1;
            else r=mid-1;
        }
        cout<<r<<endl;
    }
    return 0;
}
View Code

相关文章:

  • 2021-08-25
  • 2022-12-23
  • 2022-12-23
  • 2021-05-08
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-01-29
  • 2021-10-04
  • 2022-02-20
  • 2022-12-23
相关资源
相似解决方案