Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

谁给点数据啊。样例过了照样wa的要死人了啊,最小点对求解函数哪里有问题?(内附点对分而治之的代码)

Posted by ACM_Hohai at 2009-01-09 22:29:27 on Problem 3714
/// <summary>
/// 分而治之的方法进行点对的判断距离
/// </summary>
/// <param name="l"></param>
/// <param name="r"></param>
/// <returns></returns>
double mergepoint(int l,int r)
{
    double resultl=0,resultr=0,minlen=10000000;
    if(r>l+2) {
        int mid=(l+r)>>1;
        double tempdis;
        resultl=mergepoint(l,mid);
        resultr=mergepoint(mid,r);
        minlen=min(resultl,resultr);
        for(int i=mid;i>=l&&point[i].x>point[mid].x-minlen;i--) {
            for(int j=mid;j<=r&&point[j].x<point[mid].x+minlen;j++) {
                if(point[i].type!=point[j].type) {
                    tempdis=len(point[i],point[j]);
                    if(tempdis<minlen) {
                        minlen=tempdis;
                    }
                }
            }
        }
    }
    else
    {
        double distemp;
        for(int i=l;i<r;i++) {
            for(int j=l+1;j<=r;j++) {
                if(j==i) {
                    continue;
                }
                if(point[i].type!=point[j].type) {
                    distemp=len(point[i],point[j]);
                    minlen=minlen>distemp?distemp:minlen;
                }
            }
        }
    }
    return minlen;
}

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator