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

有没有好的算法啊?

Posted by german at 2004-05-27 20:27:10 on Problem 1012
暴力搜索在我的机器上速度可以接受,但放到提交就tle了
下面是代码,牛人指点一下吧


//a[0]=0
//a[i+1]=(m+a[i]-2)%(n-i)+1
//make sure a[1],a[2],a[3]...a[k]>k

#include <iostream.h>

int isok(int m,int k,int i,int ai)
{
    int aii;
    if(i>k)
        return 1;
    if(i>0 && ai<=k)
        return 0;
    aii=(m+ai-2)%(2*k-i)+1;
    return isok(m,k,i+1,aii);
}

int getm(int k)
{
    int m;
    for(m=k;;m++)
    {
        if(isok(m,k,0,1))
            return m;
    }
    return -1;
}

void main()
{
    int k;
    while(1)
    {
        cin>>k;
        if(k==0)
            break;
        cout<<getm(k)<<endl;
    }
}

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