1.有一个城市需要修建,给你N个民居的坐标X,Y,问把这么多民居全都包进城市的话,城市所需最小面积是多少(注意,城市为平行于坐标轴的正方形):
import java.util.Arrays;
import java.util.Scanner;
public class SuiJi {
public static long Way( long x[], long y[] ) {
Arrays.sort(x);
Arrays.sort(y);
if(x.length < 2 || y.length <2 )
return 0 ;
long x_length = Math.abs(x[x.length-1]-x[0]) ;
long y_length = Math.abs(y[y.length-1]-y[0]) ;
return Math.max(x_length, y_length) ;
}
public static void main(String []args) {
Scanner sc = new java.util.Scanner(System.in) ;
int n = sc.nextInt() ;
long x[] = new long[n] ;
long y[] = new long[n] ;
for(int i = 0 ; i < n ; i ++) {
x[i] = sc.nextLong() ;
y[i] = sc.nextLong() ;
}
long res = Way(x, y) ;
System.out.println(res * res);
}
2.圈地运动,就是用很多木棍摆在地上组成一个面积大于0的多边形~
小明喜欢圈地运动,于是他需要去小红店里面买一些木棍,期望圈出一块地来。小红想挑战一下小明,所以给小明设置了一些障碍。障碍分别是:
1.如果小明要买第i块木棍的话,他就必须把前i-1块木棍都买下来。
2.买了的木棍都必须用在圈地运动中。
那么请问小明最少买多少根木棍,才能使得木棍围成的图形是个面积大于0多边形呢?
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class SuiJi {
public static void main(String []args) {
Scanner sc = new Scanner(System.in) ;
int n = sc.nextInt() ;
if(n < 3) {
System.out.println(-1);
}
List<Integer> lengths = new ArrayList<Integer>() ;
for(int i = 0 ; i < n ; i ++) {
int length = sc.nextInt() ;
lengths.add(length) ;
}
for(int i = 2 ; i < lengths.size() ; i ++) {
int sum = 0 ;
int max = 0 ;
for(int j = 0 ; j <= i ; j ++) {
if(lengths.get(j) > max) {
sum = sum + max ;
max = lengths.get(j) ;
}else {
sum = sum + lengths.get(j) ;
}
}
if(max < sum) {
System.out.println(i+1);
break ;
}else if(i == lengths.size() - 1){
System.out.println(-1);
}
}
}
}