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

不知道0MS怎么弄的。。。反正代码捉急250MS

Posted by Ink213 at 2013-11-07 22:46:58 on Problem 1717
#include <algorithm>
#include <cstring>
#include <vector>
#include <cstdio>
using namespace std;
const int INF=1<<29;
bool dp[2][14005];
int num[2][14005], t[1005];
int main()
{
    int i, j, n, x, y;
    while(~scanf("%d",&n))
    {
        for(i=0; i<n; i++)
        {
            scanf("%d%d",&x,&y);
            t[i]=x-y;
        }
        int pre=1, last=0;
        memset(dp,0,sizeof(dp));
        dp[0][7000]=1;
        for(j=0;j<=14000;j++)
            num[pre][j]=INF;
        num[0][7000]=0;
        for(i=0;i<n;i++)
        {
            swap(pre,last);
            for(j=1000;j<=13000;j++)
            {
                if(dp[pre][j])
                {
                    dp[last][j+t[i]]=1;
                    num[last][j+t[i]]=min(num[last][j+t[i]],num[pre][j]);
                    dp[last][j-t[i]]=1;
                    num[last][j-t[i]]=min(num[last][j-t[i]],num[pre][j]+1);
                }
            }
            memset(dp[pre],0,sizeof(dp[0]));
            for(j=0;j<=14000;j++)
                num[pre][j]=INF;
        }
        for(i=0; i<=6000; i++)
        {
            if(dp[last][7000+i]||dp[last][7000-i])
            {
                printf("%d\n",min(num[last][7000+i],num[last][7000-i]));
                break;
            }
        }
    }
    return 0;
}

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