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 |
为什么都用dp,我的超时呢??import java.io.*; import java.util.*; public class Main2677n { public static void main(String [] args)throws Exception { Scanner cin=new Scanner(new File("c:\\in.txt")); while(cin.hasNextInt()) { int n=cin.nextInt(); LinkedList<Point> lp=new LinkedList<Point>(); Point start=new Point(cin.nextInt(),cin.nextInt()); for(int i=1;i<n;i++) lp.add(new Point(cin.nextInt(),cin.nextInt())); double min=Double.MAX_VALUE; for(int i=0;i<lp.size();i++) { Point tp=lp.get(i); lp.remove(tp); double tmin=Point.dis(start,tp)+g(tp,lp,start); lp.add(i,tp); if(min>tmin) min=tmin; } System.out.printf("%.2f\n",(min+0.005)); } } public static double g(Point k,LinkedList<Point> lp,Point start) { if(lp.size()==0) return Point.dis(k,start); double min=Double.MAX_VALUE; for(int i=0;i<lp.size();i++) { Point tp=lp.get(i); lp.remove(tp); double tmin=Point.dis(k,tp)+g(tp,lp,start); lp.add(i,tp); if(min>tmin) min=tmin; } return min; } } class Point { int x,y; public Point(int a,int b) { x=a; y=b; } public static double dis(Point a,Point b) { return Math.sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y)); } public boolean equals(Object o) { Point to=(Point)o; return x==to.x&&y==to.y; } } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator