题目:Amphiphilic Carbon Molecules
题意:平面上有n(n≤1000)个点,每个点为白点或者黑点。 现在需放置一条隔板,使得隔板一侧的白点数加上另一侧的黑点数总数最大。 隔板上的点可以看作是在任意一侧。
思路:枚举基准点,作为分隔线上一点,然后再扫描相对基准点的点,将扫描的点都相加起来,只需扫白的一半,因为处理的时候将黑点旋转180后就只需记录一侧的点即可。
(1)枚举平面上的每一个点作为基准点;
(2)将剩余点相对应基准点计算出各个点后存放到数组中,并且将黑点的坐标旋转180后(如果在当前侧被旋转了另一侧,如果在另一侧正好转到此侧了!),这样只需统计一侧的所有点即可,不用考虑黑白点了。然后按各个点的方位角(与x轴夹角)递增排序;
(3)开始扫描计数:用变量l代表分隔点,r代表扫描点,r进行累加