TTの謎の贈り物

トピック:TT -神秘的な贈り物
イタリアということ:
TTは、B駅で毎日ふける上の深刻な猫愛好家、猫のチャネルです。
ある日、TTは、この問題を解決することができればZJMは、TT TTに問題を決めた友人、ZJMはかわいい猫がTTを与えた購入します。
概要アレイと[I] [i]を数Nアレイの猫を与えられ、新しいアレイANSが生成されます。これは、任意のI、Jのための新たな配列として定義され、iがjは=され、あるANS [] = ABS(猫[ I] -猫[J])] 1 <= I <J <= N. この新しい配列は、次いで、中央値は、位置番号に対応するソート(1 + LEN)/ 2であり、中央値を決定し、「/」丸めあります。
TTは必死に鳥かわいい猫が欲しい、あなたは彼を助けることができますか?

入力:
入力の複数のセット、長さNの猫、猫のシーケンスの入力後の各入力1 N、Nを発現数、[I] <= 1E9、3 <= N <= 1E5〜

出力:
出力新しい配列ANS中央値〜

例:
ここに画像を挿入説明

アイデア問題解決:暴力の最初に、O(N2)白(暴力も可能に、CSPは、右側の白いVJために、当然のことながら、点在取得できます)。次いで、最適化;それはXJ-xiがなければならないことに0よりも大きいので、最初の元の配列をソートし、XJ-XI <= P使用後、2点Pを見つけ、いくつかのXJ満たす不等式(列挙XI)が存在することがわかり、場合そこXJ(N *(N-1)/ 2 + 1)/ pが中央値(おそらく少ない中央値よりもが、P(LEN + 1)よりも小さい距離の近い記載されている2番目/ 2、pは中央値でない場合、最後の1つのpまで増加し続ける必要があり、プラスの条件が満たされていない場合、p)は、中央値です。もちろん、検索プロセスは、約O(nlogn + nlogn * LOGN)の時間計算量であるXJ二分法であることがあります。

コード:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cstdlib>
using namespace std;
int a[100005];
void gengxin()
{
    memset(a,0,sizeof(a));
}
int panduan(int k,int n)
{
    int total=0,m=n*(n-1)/2;
    m=(m+1)/2;
    for(int i=0;i<n-1;i++)//通过枚举xi找xj总个数
    {
        int h=a[i]+k;
        int l=0,r=n;
        while(l+1<r)//二分
        {
            int mid=(l+r)/2;
            if(a[mid]>h)
            {
                r=mid;
            }else
            {
                l=mid;
            }
        }
        total=total+(l-i);
    }
    if(total>=m)//根据xj的总数返回不同的值,0说明p得小点,1说明p得大点
    {
        return 0;
    }else
    {
        return 1;
    }
}
int main()
{
    int n;
    while(scanf("%d",&n)!=EOF)
    {
        gengxin();
        for(int i=0;i<n;i++)
        {
            scanf("%d",&a[i]);
        }
        sort(a,a+n);//排序
        int l=0,r=a[n-1];
        while(l+1<r)
        {
            int mid=(r+l)/2;
            int flag=panduan(mid,n);
            if(flag==0)//判断
            {
                r=mid;
            }else
            {
                l=mid;
            }
        }
        printf("%d\n",r);
    }
}
公開された15元の記事 ウォンの賞賛0 ビュー224

おすすめ

転載: blog.csdn.net/qq_43653717/article/details/104858336