java在ACM竞赛中的使用
java简单功能强大,高精度类可以帮队员轻松地实现对大数操作,而不用C/C++手写高精度。使用java做题,不容易犯一些低级的错误,如: if (a = b)。刚刚接触acm的时候,笔者还不会使用java,为此还特地花了一个月时间学习了一下java语言。现在回过头来发现,学会在比赛中熟练地使用java其实根本不需要花很长时间......所以在这里小结一下java在acm比赛中的使用。
1.开发环境
打开喜闻乐见的Eclipse->新建一个Java Project->新建一个class。
2.基本框架
import java.math.BigInteger;import java.util.*;public class Main extends Thread{ public static Scanner cin=new Scanner(System.in); public int dir[][]={{1,0},{-1,0},{0,1},{0,-1}}; public int x,y,m,n,p,px[],py[]; public boolean ck[][]; public BigInteger dp[][]; public boolean flag; public void readData(Scanner cin) { int i,j; x=cin.nextInt(); y=cin.nextInt(); m=cin.nextInt(); n=cin.nextInt(); p=cin.nextInt(); ck=new boolean[201][201]; dp=new BigInteger[201][201]; px=new int[p]; py=new int[p]; for (i=0; i<p; i++) { px[i]=cin.nextInt(); py[i]=cin.nextInt(); } flag=false; } public boolean judge(int x,int y) { if (x < 0 || x > 200 || y < 0 || y > 200) return false; if (ck[x][y] == false) return false; return true; } public void run() { int i,j; int tx=1,ty=1; for (i=0; i<201; i++) { for (j=0; j<201; j++) { ck[i][j]=true; dp[i][j]=BigInteger.ZERO; } } for (i=0; i<p; i++) { ck[px[i]][py[i]]=false; for (j=0; j<4; j++) { tx=px[i]+dir[j][0]; ty=py[i]+dir[j][1]; if (judge(tx,ty) == true) ck[tx][ty]=false; } } dp[x][y]=BigInteger.ONE; if(x>m) tx=-1; else tx=1; if(y>n) ty=-1; else ty=1; for(i=x+tx;i!=m+tx;i+=tx) { if(judge(i,y)) dp[i][y]=dp[i][y].add(dp[i-tx][y]); } for(j=y+ty;j!=n+ty;j+=ty) { if(judge(x,j)) dp[x][j]=dp[x][j].add(dp[x][j-ty]); } for(i=x+tx;i!=m+tx;i+=tx) { for(j=y+ty;j!=n+ty;j+=ty) { if(judge(i,j) == false) continue; dp[i][j]=dp[i][j].add(dp[i-tx][j]).add(dp[i][j-ty]); } } flag=true; } public static void main(String[] args) { Main m[]; int prob,i; prob=cin.nextInt(); m=new Main[prob]; for (i=0; i<prob; i++) { m[i]=new Main(); m[i].readData(cin); m[i].start(); } for (i=0; i<prob; ) { if (m[i].flag == true) { System.out.println(m[i].dp[m[i].m][m[i].n]); i++; } } }}- 1楼Aikilis昨天 19:04
- 就是那个doc的web版把。收藏了。
- Re: sssogs昨天 19:14
- 回复Aikilisn最后加了个多线程的模板。。