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??我被wa了 n次了。帮帮忙~要崩溃了。。谢谢~

Posted by sunny_fable150 at 2006-12-06 21:03:31 on Problem 2385
#include"stdio.h"
#include"string.h"
#define max 1004
int re[40][max];
int r[max];
bool rf[max];
int check[max];
int ch[max];
int main()
{
    int t,w,i,co,f,j,rl,rr,le,ma,k,kkk;
    bool fg;
    while(scanf("%d%d",&t,&w)!=EOF)
    {
        j=1;ma=0;
        memset(r,0,sizeof(r));
        memset(re,0,sizeof(re));
		memset(check,1,sizeof(check));memset(ch,0,sizeof(ch));
        scanf("%d",&f);
        if(f==1) fg=true;else fg=false;
        co=1;
        for(i=1;i<t;i++)
        {
		    scanf("%d",&f);
            if(f==1&&fg==true){co++;continue;}
            else if(f==1&&fg==false) {
                r[j++]=co;co=1;rf[j-1]=false;fg=true;continue; }
            else if(f==2&&fg==false) {co++;continue;}
            else if(f==2&&fg==true) {
                r[j++]=co;co=1;rf[j-1]=true;fg=false; }
        }
		r[j]=co;rf[j]=fg;
        le=j;
        rl=0;rr=0;if(rf[1]==false) {check[1]=0;r[1]=0;}
		for(i=1;i<=le;i++)
        {
		       if(rf[i])
			      if(rf[1])
			           for(j=1;j<=i;j+=2)re[0][i]+=r[j];
				     else for(j=2;j<=i;j+=2)re[0][i]+=r[j];
			   else re[0][i]=re[0][i-1]; 
			   check[i]=1;
        }if(rf[1]==false) check[1]=0;
        for(i=1;i<=w;i++) {
            for(j=1;j<=le;j++) {
			      re[i][j]=re[i-1][j];ch[j]=check[j];
	            for(k=j-1;k>0;k--) 
				   if(rf[j]) {
  				      if(ch[k]==0)
                        if(re[i-1][k]+r[j]>re[i][j]){re[i][j]=re[i-1][k]+r[j];ch[j]=1;}
						    }
					else if(ch[k]==1) 
						    if(re[i-1][k]+r[j]>re[i][j]){re[i][j]=re[i-1][k]+r[j];ch[j]=0;} 
				kkk=r[j];
				for(k=j-1;k>0;k--){
				   if(ch[k]==rf[j]) {
			        	if(re[i][j]<re[i][k]+kkk){ re[i][j]=re[i][k]+kkk;ch[j]=ch[k];} }
					else if(re[i][j]<re[i][k]) { re[i][j]=re[i][k];ch[j]=ch[k];}
				}
				for(k=1;k<=le;k++) check[k]=ch[k];
				if(re[i][j]>ma) ma=re[i][j];
				}
		}
        printf("%d\n",ma);
    }
    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