二分(三分)

題目鏈接:二分·歸并排序之逆序?qū)?/a>

int a[100005];
int t[100005];
ll ans=0;

void guibing(int st,int mid,int ed,int a[],int t[])
{
    int x=st,y=mid+1,k=st,num=mid-st+1;
    while(x<=mid&&y<=ed)
        if(a[x]<=a[y])
            t[k++]=a[x++],num--;
        else
            t[k++]=a[y++],ans+=num;
    while(x<=mid)t[k++]=a[x++];
    while(y<=ed)t[k++]=a[y++];
    for(int i=st;i<=ed;i++)
        a[i]=t[i];
}

void merge_sort(int st,int ed,int a[],int t[])
{
    int mid=(st+ed)/2;
    if(st!=mid)merge_sort(st,mid,a,t);
    if(mid+1!=ed)merge_sort(mid+1,ed,a,t);
    guibing(st,mid,ed,a,t);
}

int main()
{
    int n;
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
        scanf("%d",&a[i]);
    merge_sort(1,n,a,t);
    printf("%lld\n",ans);
    return 0;
}

題目鏈接:三分·三分求極值

#include<cstdio>
#include<cmath>
#define eps 1e-6

double a,b,c,x,y;

double dis(double x0,double y0)
{
    return sqrt((x-x0)*(x-x0)+(y-y0)*(y-y0));
}

double f(double x0)
{
    return a*x0*x0+b*x0+c;
}

int main()
{
    scanf("%lf%lf%lf%lf%lf",&a,&b,&c,&x,&y);
    double l=-200,r=200,rm,lm;
    while(r-l>eps)
    {
        double lenth=(r-l)/3.0,lm=l+lenth,rm=r-lenth;
        double disl=dis(l,f(l)),disr=dis(r,f(r));
        double disrm=dis(rm,f(rm)),dislm=dis(lm,f(lm));
        if(disrm<dislm)l=lm;
        else r=rm;
    }
    printf("%.3lf\n",dis(l,f(l)));
    return 0;
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容