uva11168】的更多相关文章

uva11168 题意 给出一些点坐标,选定一条直线,所有点在直线一侧(或直线上),使得所有点到直线的距离平均值最小. 分析 显然直线一定会经过某两点(或一点),又要求点在直线某一侧,可以直接求出凸包,枚举每条边作为直线. 现在就要快速求出所有点到直线的距离,有求点到直线距离方程 \(\frac{|Ax_0 + By_0 + C|}{\sqrt{A^2+B^2}}\),注意所有点都在直线同一侧,所有 \(Ax_0 + By_0 + C\) 正负号相同,预处理出所有点横.纵坐标之和即可. code…
题意 PDF 分析 首先发现距离最短的直线肯定在凸包上面. 然后考虑直线一般方程\(Ax+By+C=0\),点\((x_0,y_0)\)到该直线的距离为 \[ \frac{|Ax_0+By_0+C|}{\sqrt{A^2+B^2}} \] 由于所有点在直线同侧,所以绝对值里面的符号相同,所以维护所有点\(x\)坐标和\(y\)坐标之和就行了. 时间复杂度\(O(T n \log n)\) 代码 #include<iostream> #include<cstdio> #include…
题目链接:https://cn.vjudge.net/problem/UVA-11168 题意: 给出平面上的n个点,求一条直线,使得所有的点在该直线的同一侧(可以在该直线上),并且所有点到该直线的距离和最小,输出该距离除以n: 题解: 显然最好能让越多的点在这条直线上就越好,但又要所有点满足在同侧,则显然要选取某条凸包边界所在直线作为ans: 求出凸包后,遍历每条凸包边,求出所有点到这条直线的距离和,找到最小的即可. AC代码: #include<bits/stdc++.h> #define…