Educational Codeforces Round 64 -C(二分)
生活随笔
收集整理的這篇文章主要介紹了
Educational Codeforces Round 64 -C(二分)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目鏈接:https://codeforces.com/contest/1156/problem/C
題意:給出n個數和整形數z,定義一對數為差>=z的數,且每個數最多和一個數組成對,求最多有多少對。
思路:先按升序排序,在區間[0,n/2]二分答案即可,判斷m是否滿足條件利用貪心思想,即看前x個數和后x個數是否能對應組成對。
AC代碼:
#include<cstdio> #include<algorithm> using namespace std;int n,z,a[200005];bool judge(int x){bool ans=true;for(int i=0;i<x;++i)if(a[i]+z>a[n+i-x]){ans=false;break;}return ans; }int main(){scanf("%d%d",&n,&z);for(int i=0;i<n;++i)scanf("%d",&a[i]);sort(a,a+n);int l=0,r=n/2,m;while(l<=r){m=(l+r)>>1;if(judge(m)) l=m+1;else r=m-1;}printf("%d\n",r);return 0; }?
轉載于:https://www.cnblogs.com/FrankChen831X/p/10808943.html
總結
以上是生活随笔為你收集整理的Educational Codeforces Round 64 -C(二分)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 亿级用户下的新浪微博平台架构阅读心得
- 下一篇: 如何简单地利用Bitmap为中介储存图片