关注
/**
* Created by MKD on 2017/8/21.
* 思路是不断的利用两个点连线,获取能够取得的最大点,并排除凸点情况
*/
import java.util.*;
public class Main {
public static void main(String[] args){
Scanner in = new Scanner(System.in);
int res;
int _points_size = 0;
_points_size = Integer.parseInt(in.nextLine().trim());
double[] _points = new double[_points_size];
double _points_item;
for(int _points_i = 0; _points_i < _points_size; _points_i++) {
_points_item = Double.parseDouble(in.nextLine().trim());
_points[_points_i] = _points_item;
}
res = castle(_points);
System.out.println(String.valueOf(res));
}
static int castle(double[] points) {
int len = points.length;
int result = 0;
if(len<=8) return 0;
else{
for (int j=0;j<len/2 ;j++){
double x1 = points[2*j];
double y1 = points[2*j+1];
for(int k=0;k<len/2;k++){
if(k==j) continue;
double x2 = points[2*k];
double y2 = points[2*k+1];
double w= getw(x1,y1,x2,y2);
double b = getb(x1,y1,x2,y2);
int r= getMax(j,k,len,w,b,points);
if(r>result) result=r;
}
}
}
return result;
}
public static Double getw(double x1, double y1, double x2, double y2){//计算w
double w = (x1-x2)/(y1-y2);
return w;
}
public static Double getb(double x1, double y1, double x2, double y2){//计算b
double w = (x1-x2)/(y1-y2);
double b = y1 - x1*w;
return b;
}
public static int getMax(int j,int k,int len,double w,double b,double[] points){//寻找最多的城堡
int n0=0;int n1=0;int n2=0;
int result=0;
for(int i=0;i<len/2;i++) {
if (i == j || i == k) continue;
double x = points[2 * i];
double y = points[2 * i + 1];
double re = y - w * x + b;
if (re > 0) n1 = n1 + 1;
else if (re < 0) n2 = n2 + 1;
else n0 = n0 + 1;
}
result = Math.max((n0+n1),(n2+n0));
if(result == len/2 - 2) return 0;//如果加上连线上除开连接的两个点,数量为total-2,那么一定是凸点
else return result+1;//排除凸点后,总数再加上本身点,固 + 1
}
}
查看原帖
点赞 6
相关推荐
点赞 评论 收藏
分享
notbeentak...:就抓,嗯抓,开不开匿名都要抓,一点坏事不让说,就对公司顶礼膜拜佩服的五体投地就对了 点赞 评论 收藏
分享
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 十二月请对我好一点 #
6075次浏览 140人参与
# 父母对你找工作是助力还是阻力? #
2041次浏览 56人参与
# 哪一瞬间让你觉得“这班不如不上” #
1913次浏览 22人参与
# 为了去实习,我赌上了___ #
1935次浏览 37人参与
# 工作中出现了XX情况正常吗 #
7459次浏览 90人参与
# 聊聊我眼中的AI #
484600次浏览 6704人参与
# 一人推荐一个值得做的项目 #
2582次浏览 46人参与
# 高薪高压 vs 低薪wlb,你怎么选? #
3356次浏览 41人参与
# uu们,春招你还来吗? #
1859次浏览 21人参与
# 回顾今年你干过的最“勇”的一件事 #
4288次浏览 72人参与
# 公司福利里最没用的一项是啥 #
2382次浏览 55人参与
# 工作前VS工作后,你的心态变化 #
3637次浏览 33人参与
# 秋招有哪些公司要求提前实习 #
90880次浏览 481人参与
# 如何用一句话描述你的职业 #
27862次浏览 180人参与
# 机械人的金三校招总结 #
38859次浏览 465人参与
# 追觅科技求职进展汇总 #
28867次浏览 181人参与
# 职场上哪些事情令人讨厌 #
32199次浏览 142人参与
# 你收到了团子的OC了吗 #
1469156次浏览 11805人参与
# 应届生,你找到工作了吗 #
90889次浏览 570人参与
# 2023届毁约公司名单 #
228584次浏览 1056人参与
查看11道真题和解析