WA过一发,因为忽视了金额的分布范围。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
|
import java.io.*; import java.util.*; public class Main { static int[] a; static int maxn=10001; public static void main(String[] args) throws IOException{ StreamTokenizer in=new StreamTokenizer(new BufferedInputStream(System.in)); PrintWriter out=new PrintWriter(System.out); a=new int[maxn]; while(in.nextToken()!=StreamTokenizer.TT_EOF){ int n=(int)in.nval; Arrays.fill(a, 0); for(int i=1;i<=n;i++){ in.nextToken(); int k=(int)in.nval; a[k]++; } int ans=-1; for(int i=0;i<maxn;i++) if ((a[i]<<1)>n) ans=i; out.println(ans); } out.flush(); out.close(); } }
|
明显搞复杂了,做了一回出题人眼中的“火星人”T_T
平面上的整点就是无法构成正三角形、正五边形、正六边形,没这点见识就只有瞎弄。。。
简化到这个地步,正方形的判断就应该仔细点了吧?四条边及两对角线的长度比较都写上,
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
|
import java.io.*; import java.util.*; public class Main { static Point[] pt; static boolean check(Point p1,Point p2,Point p3,Point p4){ double[] v=new double[6]; v[0]=Point.dist(p1, p2); v[1]=Point.dist(p2, p3); v[2]=Point.dist(p3, p4); v[3]=Point.dist(p1, p4); v[4]=Point.dist(p1, p3); v[5]=Point.dist(p2, p4); Arrays.sort(v); return v[0]==v[1]&&v[1]==v[2]&&v[2]==v[3]&&v[4]==v[5]; } public static void main(String[] args) throws IOException{ InputReader in=new InputReader(System.in); PrintWriter out=new PrintWriter(System.out); while(in.nextLine()!=null){ int n=in.nextInt(); pt=new Point[n]; for(int i=0;i<n;i++) pt[i]=new Point(in.nextInt(), in.nextInt()); int ans=0; for(int i=0;i<n;i++) for(int j=i+1;j<n;j++) for(int k=j+1;k<n;k++) for(int l=k+1;l<n;l++){ Point p1=pt[i],p2=pt[j],p3=pt[k],p4=pt[l]; if (check(p1, p2, p3, p4)) ans++; } out.println(ans); } out.flush(); out.close(); } }
|
多么有教育意义的猜公式,猜不出就别偏执了。。。
f[i]=s[i-3]+1,s[i]=s[i-1]+f[i],…