1117 Eddington Number (二分)
Posted feiief
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1117 Eddington Number (二分)相关的知识,希望对你有一定的参考价值。
#include <iostream> #include <vector> #include <algorithm> #include <queue> #include <cstring> #include <set> #include <unordered_map> #include <cmath> # define LL long long using namespace std; int N; vector<int> dis; int find(int n){ //找第一个比n大的数 int left=0; int right=N-1; while(left<=right){ int mid=(left+right)/2; if(dis[mid]>n){ right=mid-1; }else{ left=mid+1; } } if(left>N-1) return 0; return N-left; } int main(){ scanf("%d", &N); for(int i=0;i<N;i++){ int a; scanf("%d", &a); dis.push_back(a); } sort(dis.begin(), dis.end()); int left=0; int right=N; while(left<=right){ int mid=(left+right)/2; int nums=find(mid); //最大的满足nums==mid if(nums==mid){ left=mid+1; }else if(nums<mid){ right=mid-1; }else { left=mid+1; } } printf("%d ", right); return 0; }
以上是关于1117 Eddington Number (二分)的主要内容,如果未能解决你的问题,请参考以下文章
PAT甲级1117 Eddington Number (25分)