| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
这种模拟题最好还是用类稳当。。破JAVA,又是100MS以上ACimport java.io.*;
import java.util.Arrays;
class player
{
private int pos=0;
public int move(int num,int[] game)
{
if(pos+num>100) return 0;
else
{
pos+=num;
if(game[pos]==-1) return -1;
else if(game[pos]==-2) return -2;
else if(game[pos]>0)
{
while(game[pos]!=0) pos=game[pos];
}
}
if(pos==100) return 1;
else return 0;
}
};
public class pku1059 {
public static void main(String[] args) throws IOException{
StreamTokenizer in=new StreamTokenizer(System.in);
int count=0,num;
int list[]=new int[1001];
while(true)
{
int temp;
in.nextToken();
temp=(int)in.nval;
if(temp!=0) list[++count]=temp;
else break;
}
//--------------------------------------------------------------
while(true)
{
in.nextToken();
num=(int)in.nval;
if(num==0) break;
int game[]=new int[101];
player data[]=new player[num+1];
for(int i=1;i<=num;i++) data[i]=new player();
while(true)
{
int t1,t2;
in.nextToken();
t1=(int)in.nval;
in.nextToken();
t2=(int)in.nval;
if(t1==0&&t2==0) break;
else game[t1]=t2;
}
while(true)
{
int t;
in.nextToken();
t=(int)in.nval;
if(t==0) break;
else if(t>0) game[t]=-1;
else game[-t]=-2;
}
//--------------------------------------------------------------
boolean flag[]=new boolean[num+1];
boolean exit=false;
int pos=1;
Arrays.fill(flag, true);
while(pos<=count&&!exit)
{
for(int i=1;i<=num&&!exit;i++)
{
if(flag[i])
{
int res=data[i].move(list[pos++], game);
while(res==-1) res=data[i].move(list[pos++], game);
if(res==-2) flag[i]=false;
else if(res==1)
{
System.out.println(i);
exit=true;
}
}
else flag[i]=true;
}
}
}
}
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator